2015-12-17 35 views
2

我开始在我的奥里利亚Web项目使用JSPM,我想知道是否有使用import "<client side library>"任何后果或优势?JSPM - 包含使用导入的客户端库文件vs使用脚本标记有什么优点/缺点?

我见过这样的代码JS类中因此对于客户端库:

import "jquery"; 
import "bootstrap/css/bootstrap.css!" 
import "bootstrap"; 

export class App { 
    constructor { 

    } 
} 

问题:什么是进口这种方式之间的区别/优点/缺点是反对传统的包括<script><link>标签在.html文件中?

<html> 
<head> 
    <link rel="stylesheet" src="<bootstrap path>/bootstrap.css"> 
</head> 
<body> 

    <script type="text/javascript" src="<bootstrap path>/bootstrap.js"></script> 
</body> 
</html> 

我的试验和错误让我发现,通过在特定的类/ js文件使用import,它限制了图书馆该特定视图文件作为反对正在全球范围内提供。

最后,当你去建立这些项目进行生产,不这些库需要在index.html的,以存在?

回答

4

我的观点是:你应该使用import关键词,这是为什么:

  • 的风格问题:这是ES6风格,并Aurelia路上有点儿迫使你使用它
  • 可读性重要:其他开发人员会希望你使用import,所以它可能会混淆他们
  • 再次,import负责加载,所以如果你只是添加一个脚本标签,你可能会添加s ome import然后可能重新声明一些函数。
  • 美容:我不认为这是非常漂亮的有100个<script>标签在你的代码
  • 捆绑生产。你会用Grunt还是Gulp来连接和丑化所有这些?如果是这样,那就是额外的工作,因为在默认配置中它是开箱即用的。如果没有......呃,不,你应该做的
  • Rollup。这里来了最甜蜜的部分。

JSPM太棒了!这是这个项目有一点不同,但 - 它 结合了存储库的软件包管理器和客户端模块 装载机,而不是简单地捆扎模块。 JSPM允许你使用任何 模块格式,甚至发展离不开一个构建步骤,所以它是用于创建应用的 绝佳选择。 Rollup会生成较小的 捆绑包,它们不使用复杂的SystemJS格式,因此创建库的选择也是更好的 。 JSPM的未来版本可能会使用汇总 内部,所以你会得到两全其美的。

汇总是使用import另一个。它所做的就是翻录你使用的库,并获取所需的最少量的代码,所以如果你只需要一些东西,比如jQuery,你不需要让你的访问者下载50KB(或者它多少现在?)。

您可以阅读更多关于Rollup here

+0

非常感谢,感谢您的解释。我仍然对捆绑和美容部分感到困惑。在我目前的工作流程中,我将uglify +连接成1个lib.css文件1个app.css和1个lib.js + 1个app.js.所以索引中只会有4个文件。我会看看Rollup,它看起来很有希望。 – TheLazyChap

+0

@TheLazyChap可能你会发现这篇文章捆绑有趣的http://blog.durandal.io/2015/06/23/bundling-an-aurelia-application/ –

+2

不要忘记,导入照顾的依赖。如果代码导入依赖于其他模块的模块(取决于其他模块以及其他模块),则所有依赖项都会以正确的方式加载,但在构建模块时,它会依赖于内存。此外,您不使用代码的aurelia rip捆绑过程,并将您使用的模块和依赖项捆绑到运行时的性能 –

相关问题