加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular,没有浏览器?

发布时间:2020-12-17 10:22:53 所属栏目:安全 来源:网络整理
导读:有时我想尝试(在本地节点脚本中)与Angular的某些方面 – 例如服务,DI等 – 与浏览器或DOM无关的东西.有没有办法做到这一点?即加载角度基础设施的一些基础部分?如果我只是在Node脚本中需要(“angular”),它会抱怨: ReferenceError: window is not defined
有时我想尝试(在本地节点脚本中)与Angular的某些方面 – 例如服务,DI等 – 与浏览器或DOM无关的东西.有没有办法做到这一点?即加载角度基础设施的一些基础部分?如果我只是在Node脚本中需要(“angular”),它会抱怨:
ReferenceError: window is not defined

这是有道理的,因为Angular适用于Browser-window.

但似乎Angular的某些部分可用于非Web应用程序 – 尽管这不是我提出这个问题的原因.我只是想提高我对Angular的理解,有时候想要做一点实验,同时尽可能地剥离/忽略.

尝试使用Angular最好在浏览器中完成,因为窗口和其他API的Angular依赖.

但是,如果您已经开始使用Angular with node,那么您可以查看vm模块,该模块本质上允许您使用特定的替代对象将代码作为一种代理全局对象进行评估.例如.:

const vm = require('vm');
const fs = require('fs');

const test = fs.readFileSync('./test.js','utf-8');

const windowProxy = {
    document: {
        createElement: function() {
            return {
                setAttribute: function() {},pathname: ''
            }
        },querySelector: function() {},addEventListener: function() {}
    },location: {
        href: ''
    },addEventListener: function() {}
};
windowProxy.window = windowProxy;

vm.createContext(windowProxy);

vm.runInContext(test,windowProxy);

至少会让你加载Angular而不抱怨.毫无疑问,您会遇到更多错误,并且必须自己填充缺少的浏览器API.

您也可以查看PhantomJS以获得更强大的测试环境,尽管它不再是Node.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读