什么's是连接供应商js文件的最佳方式
What's the best way to concatenate vendor js files?
在我的Angular JS应用程序中,我使用了很多第三方软件包,主要通过Bower进行维护。
当我使用Grunt将它们连接到一个大型文件中时,当我加载页面时,我会遇到错误,例如
Uncaught ReferenceError: angular is not defined
和
GET http://localhost:8080/theproj/v4/dist/app/bootstrap.css.map 404 (Not Found)
正确连接所有这些文件的最佳方法是什么,以确保所有文件都以正确的顺序加载,并且不会造成问题?
第一个问题:很多时候第三方库必须以特定的顺序加载。这看起来像是你第一期的来源。有东西试图使用angular,它在angular代码之前加载。您应该重构您的繁重任务,以便使用第三方库的预定义顺序。
第二个问题:您可能缺少.map文件。这是Chrome开发工具使用的一个文件,用于向您显示css的原始源代码(sass或更少)。要么提供映射文件,要么从bootstrap.css中删除对它的引用。要么忽略错误,这只是当你打开chrome dev工具时的错误,实际上不会影响你的应用程序。
关于javascript文件的正确顺序问题,我在一个更大的项目中遇到了这个问题,没有人真正知道哪个是正确的顺序。幸运的是,我们发现Google闭包编译器正是这样做的:https://github.com/google/closure-compiler
你给它所有的js文件,它会分析它们并按顺序连接它们
$ java -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...
甚至还有一个用于连接的grunt插件:https://github.com/gmarty/grunt-closure-compiler
'closure-compiler': {
frontend: {
closurePath: '/src/to/closure-compiler',
js: 'static/src/frontend.js',
jsOutputFile: 'static/js/frontend.min.js',
maxBuffer: 500,
options: {
compilation_level: 'ADVANCED_OPTIMIZATIONS',
language_in: 'ECMASCRIPT5_STRICT'
}
}
},
另一种方法是将您的java脚本更改为AMD或CommonJS模块,这样您就不必担心正确的顺序。RequireJS(http://requirejs.org/docs/start.html)是AMD或Webpack的可能性(http://webpack.github.io/)。。。或者许多其他的。
- 从文本文件js中读取列表
- 当我用ctrl+p搜索时,为什么要在谷歌chrome上使用inspect来调试缺少显示文件js
- 获取用于外部JavaScript文件(.js)的代码提示
- 如何将Javascript文件(.js文件)放在web服务器中
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 在 Node 中包含 javascript 文件.js无需 require('.') ing
- 如何使用jquery显示多个文件.多文件.js
- 使用 PDF 打开 PDF 文件.js而不将文件作为查询字符串传递
- 转换颜色十六进制值以用于三个 JSON 文件.js
- 如何使用 jQuery 选择多个文件.多文件.js插件?使用单个关闭按钮一次选择多个文件
- 如何在 Gulp 任务中间添加 CSS 文件.js
- 如何从Dropzone上传和删除文件.js
- 如何在视频中添加视频文件.js 4.2.1.
- 从快速节点下载文件.js具有 JWT 授权
- 访问 JavaScript 文件.js中的 C# 变量
- 在节点中热重载外部 js 文件.js如果文件有任何更改
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- 如何在多文件.js中上传文件时检查文件扩展名
- 将文件.js中的var导入到模块joomla的模板中,并使用后台进行修改
- 在path项目中编写文件js脚本