手摸手学前端:Vue router路由之import 与 require 使用区别以及懒加载
node编程中最重要的思想就是模块化,import和require都是被模块化所使用。import 与 require 区别:遵循规范require 是 AMD规范引入方式import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法调用时间require是运行时调用,所以require理论上可以运用在代码的任何地方import是编译时调用,所以必须放在文件开头本质require是
·
node
编程中最重要的思想就是模块化,import
和require
都是被模块化所使用。
import
与 require
区别:
遵循规范
require
是 AMD规范引入方式import
是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法
调用时间
require
是运行时调用,所以require
理论上可以运用在代码的任何地方import
是编译时调用,所以必须放在文件开头
本质
require
是赋值过程,其实require
的结果就是对象、数字、字符串、函数等,再把require
的结果赋值给某个变量import
是解构过程,但是目前所有的引擎都还没有实现import
,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import
语法会被转码为require
vue-router的定义方式
1. import方式
import Login from '@/views/Login'
import Home from '@/views/Home'
const routes = [
{
path: '/',
name: 'Login',
component: Login
},
{
path: '/home',
name: 'Home',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: Home
}
]
2. require方式,异步加载-组件异步加载即为路由的异步加载
export default [
{
path: '/userCenter',
name: 'user-center',
component: resolve => require(['@/page/userCenter/index.vue'], resolve)
},
{
path: '/news/detail',
name: 'news-detail',
component: () => resolve => require(['@/page/news/detail.vue'], resolve)
}
]
3. 官方默认的懒加载方式,用更加简单的写法来组织Vue异步组件和Webpack的代码分隔
export default [
{
path: '/news/detail',
name: 'news-detail',
component: () => import('@/page/news/detail.vue')
}
]
4. webpack提供的require.ensure(),vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。
{
path: '/home',
name: 'home',
component: r => require.ensure([], () => r(require('@/components/home')), 'demo')
}, {
path: '/index',
name: 'Index',
component: r => require.ensure([], () => r(require('@/components/index')), 'demo')
}
更多推荐
已为社区贡献3条内容
所有评论(0)