gpt4 book ai didi

angularjs - Angular,没有浏览器?

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:01 26 4
gpt4 key购买 nike

有时我想尝试(在本地 Node 脚本中)Angular 的某些方面——例如服务、DI 等——与浏览器或 DOM 无关的东西。 有办法吗?即加载 Angular 基础设施的一些基础部分? 如果我只是在 Node 脚本中要求(“angular”),它会提示:

ReferenceError: window is not defined

这是有道理的,因为 Angular 为浏览器窗口而生。

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

最佳答案

由于 window 和 Angular 依赖的其他 API,最好在浏览器中进行 Angular 试验。

但是,如果您执意要将 Angular 与 Node 一起使用,则可以查看 vm 模块,它实际上可以让您使用特定的替代代码来eval 代码对象作为一种代理全局对象。例如:

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。

关于angularjs - Angular,没有浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com