首页 文章

非SPA站点的Angular 2缓慢初始化

提问于
浏览
6

我们正在为一个项目评估Angular 2,我注意到一些问题,我需要澄清这是一个Angular问题还是我使用Angular错误 .

我们正在用Angular替换部分静态页面以增强用户体验 . 由于替换的元素可以位于页面上的任意位置,因此我们无法引导单个Angular应用程序(组件在DOM中不像树一样,我们需要传统的模板) . 我们也没有使用任何Angulars路由 .

因此,第一个问题是Angular是非SPA网站的正确技术 . 要构建'小部件' .

第二个问题是关于表现 . 如果您有非SPA页面,则无法省略页面重新加载 . 每次页面重新加载时,都必须再次初始化Angular . 这里的好处是,实例化多个根组件不会显着增加引导程序,所以这是一个加号 . 不好的是,如果我使用Quickstart tutorial中的配置,我需要大约1.7s来初始化应用程序和组件,并且很多时间都归因于system.js,类加载器 . 将此更改为webpack并预编译所有内容仍需要300-400毫秒才能显示组件 . This页面与我的组件具有非常相似的引导程序 .

这可以进一步优化(假设<130ms)或者我应该寻找其他技术(例如React),因为它不在Angular的范围内用于非SPA页面 .

干杯

汤姆

1 回答

  • 1

    您可以在<130ms标记处获得更多优化 . 我目前正在开发一个混合应用程序(一些页面是静态服务器渲染,其他页面包含Angular小部件,包括路由),我们的加载/渲染时间非常快 . 我们正在使用AOT,每个小部件的应用程序包大约是50kb . 我正在使用webpack并输出单个polyfill和单个供应商包,它们加载到原始布局上并被缓存 . 这样,每个页面只需要为该页面包含的任何Angular小部件下拉应用程序包 . AOT让世界变得与众不同 . 此外,请确保您已将应用程序构建得很好,即不加载整个RxJS库,而只加载您需要的运算符 . 另外,要注意你的结构你的桶是什么,因为它可以导致不需要的代码不被树木震动 .

相关问题