我有一个AngularJS项目,我正在考虑迁移到Dart。我不想将整个项目迁移到大爆炸中,所以我正在寻找并排运行这两个应用程序的方法。
dart应用程序将作为index.html在root上运行。 js应用程序将在一个单独的路径上运行,比如'/ jsApp'。
当我构建测试项目时,似乎/ build目录包含许多不必要的文件。我是否需要部署/ build / web目录的完整内容?
实际加载的是什么? html文件是否仍然在运行时加载或者是否捆绑到主文件中?
我是否需要main.dart.js以及main.dart.precompiled.js?对于一个简单的应用程序来说,它们似乎是非常大的文件。这是预料之中的吗?
我仍然不清楚所有这些事情是如何结合在一起的。
答案 0 :(得分:1)
如果您想让生成的文件尽可能小,您应该:
您的pubspec.yaml应如下所示:
name: angular_dart_demo
version: 0.0.1
dependencies:
angular: 0.12.0
[...]
transformers:
- angular
html_files:
- web/my_html_template.html
- web/another_html_template.html
这样你将得到800KB的js,而不是5MB的js;) 这是因为Angular Dart使用镜像,因此,如果不使用角度变换器,生成的js代码会变得非常大。
我认为html模板被复制到构建目录,并将在运行时请求。
您必须以某种方式将从“pub build”获得的内容与现有的js应用程序合并。
答案 1 :(得分:1)
我正在使用混合了Dart控制器的AngularJS。您不必调整当前的项目结构来使用pub构建。只需使用dart2js编译各个dart文件,并在页面中包含“.js”文件。您不必添加本机dart脚本标记或在代码中包含dart引导程序。只需为生成的js文件(您需要的唯一文件)包含一个脚本标记,它就能满足您的期望。我打算很快写下这个简短的概述。
答案 2 :(得分:0)
通常需要部署整个构建目录,通常没有不必要的文件。
最近的Dart构建中不再生成*.precompiled.js
文件(这是为了符合CSP)。
您使用的是Dart版本?
如果您在调试模式下构建,源映射文件也会在构建目录中生成。
浏览器加载用户请求的HTML文件,然后在此HTML和所有其他资源(img,css,...)中加载<script>
标记中的脚本文件引用
我不知道带有外部HTML模板文件的Angular组件的构建输出是否在index.html
中内联,或者它们是否按原样复制。