Vuejs用Webpack打包时如何进行代码拆分及加载?提供新2娱乐官网,恒峰娱乐等产品欢迎前来洽谈业务合作

恒峰娱乐

恒峰娱乐资讯

恒峰娱乐新闻

Vuejs用Webpack打包时如何进行代码拆分及加载?

来源:新2娱乐官网 时间:2018-06-26

  通过Webpack捆绑你的单页应用程序的有一个大概率会发生的缺点是,会产生一个非常大的捆绑文件,有时会是几兆字节!

  这个缺点是个问题的原因是用户在看到屏幕上的任何东西之前必须下载整个文件并运行它。如果用户在信号不好或者速度比较慢的时候使用移动设备,那这个过程可能需要相当长的时间。

  代码拆分的想法是,将一个包拆分成多个更小的文件,允许用户只下载他们需要的代码。

  例如,查看下面这个简单的Web页面时,我们可以识别在初始负载下不需要的应用程序的一部分:

  如果我们采用延迟加载红色的这些部分代码直到初始渲染之后,那它就可以让用户更快地看到页面并与这个页面进行相应的交互。

  在这篇文章中我将告诉你Vue.js和WebPACK如何切分一个单页应用到多个最佳大小文件,以及如何实现动态加载。

  代码拆分的关键是vue.js应用程序中的异步组件。这些组件是可以被异步加载的,包括这些组件的各种定义(包括其模板、数据、方法等)。

  如果你声明一个供其他组件使用的组件API,即Vue组件(名称,定义),而不是定义一个对象作为它的第二个参数。那么异步组件要有一个函数,这个函数有两个显著的特点:

  异步组件代码拆分的第一步,是依靠我们现有的机制,提取部分我们应用程序的代码。

  首先我们需要通过Webpack。我们将我们的抽象组件定义为ES6模块文件:

  然而,这是静态的,并且在编译时进行解析。如果我们想获得代码拆分的好处的话,我们需要的是一种在运行的应用程序中动态加载此方法的办法。

  目前,不太可能用JavaScript脚本动态加载模块文件。当然目前在ECMAScript下,也有一个动态模块的加载功能即调用import() 。

  import()在Webpack中已经被使用了,并且确实也把它作为一个代码的分割点来看待,这样当执行文件被创建的时候,就会把请求的模块放到一个单独的文件中。(注意一个单独的块,但现在它已经成为一个单独的文件了)。

  import()会以文件名作为参数并返回一个promise对象。下面来看我们如何加载上面的模块:

  注意:如果您在使用Babel,则需要添加语法动态导入插件,以便Babel能够正确地解析此语法。

  另一个需要注意的事项:您可以给动态导入的模块一个名称,使其更容易识别;只需在文件名前面添加注释,即与上面示例中所做的相同。

  通过把他们拼在一起,因为import()返回一个promise对象,我们可以用它与Vue的异步组件功能进行结合。Webpack将捆绑asynccomponent,然后再分别动态加载到应用程序,应用程序通过Ajax调用它。

  当main.js运行时,它将启动一个异步组件模块的请求(这是自动发生的因为Webpack的import()实现了加载模块与Ajax的代码!)。

  如果Ajax调用成功,返回的模块,promise对象和组件就可以呈现,所以Vue将重新渲染页面:

  在Vue中如何实现代码的分拆?可以使用单一组件文件,通过使用SFC的写法重构代码。

  这是一个典型的技术方面的问题。那么现在的问题是,您如何构建代码拆分应用程序?

  最明显的方法是通过页面。比如说,你的应用程序中有两页,一个主页和一个普通页面。这些页面可以打包成home.vue和about.vue及可应用的分割点。

  当然也有其他的方法,例如,你可以在任何组件,有条件地显示分拆(标签,状态,下拉菜单等等)或是页面下方的褶皱。

  下一篇文章中将探讨一些如何在webpack打包的过程将vue.js多页面应用,进行结构化的代码分拆,敬请期待!

www.tm7779.com 相关文章

  • 无相关信息

恒峰娱乐产品