各位好:
我想在electron的渲染线程中使用angular框架,但是不想把代码使用webpack打包,因为electron的渲染线程中也同样支持commonJS语法,所以我想只把Typescript转化为commonJS不打包,然后直接在index.html中require相应的文件。下面是我的实现过程
app.component.ts
1 2 3 4 5 6 |
|
app.module.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
main.ts
1 2 3 4 5 |
|
tsc
编译这三个文件1 |
|
现在生成了对应的js
文件,目录结构如下:
index.html
中require('./main')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
启动electron程序
到目前为止程序看起来都是正常的,也符合我的目的,但是当我更改输入框里面的内容的时候,问题出现了,下面h1
标签里面的{{name}}
表达式并不随着输入框里面的值变化,就是说数据绑定没有效果。
接下来为了探索问题原因,我把之前tsc
生成的3个js
文件使用webpack
进行了打包
1 |
|
将index.html
中的require
语句换成require('./main.out')
,再次运行程序
现在再修改input里面的内容,数据绑定生效了!!!
欧阳克2017-06-14 10:55:29
把main.ts里的import 'zone.js'
改成import 'zone.js/dist/zone.js'
原因的话,你看看zone.js的package.json应该就清楚了
阿神2017-06-14 10:55:29
我对electron不太熟, 但你的问题我觉得应该是在import的问题。
首先webpack的工作原理就是把所有的js打包起来,比如你引用node_modules
里面的@angular/core
, 那webpack知道会去node_modules里面去找到他并打包到指定的文件夹里面去(比如你的app文件夹里面),所以使用webpack后引用是正常的。 那问题就在这里了, electron对于非./
开头的路径会去node_modules
找到它吗?