专栏名称: 前端早读课
我们关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,四万+同行相伴成长。
目录
相关文章推荐
山东环境  ·  2025年全国“安全生产月”公益广告 ·  4 小时前  
山东环境  ·  2025年全国“安全生产月”公益广告 ·  4 小时前  
宝山消防支队  ·  以案为例 |《动火作业要注意》 ·  4 小时前  
宝山消防支队  ·  以案为例 |《动火作业要注意》 ·  4 小时前  
前端大全  ·  Mobile Bridge:让 ... ·  2 天前  
山东公安  ·  高考结束,我们在山东警察学院等你! ·  2 天前  
山东公安  ·  高考结束,我们在山东警察学院等你! ·  2 天前  
51好读  ›  专栏  ›  前端早读课

【第992期】webpack 2 打包实战(上)

前端早读课  · 公众号  · 前端  · 2017-07-11 04:50

正文

请到「今天看啥」查看全文


它是一个空白页面, 注意这里我们不需要自己写 , 因为打包后的文件名和路径可能会变, 所以我们用webpack插件帮我们自动加上.

然后重点是src/index.js:

// 引入作为全局对象储存空间的global.js, js文件可以省略后缀

import g from './global'

// 引入页面文件
import foo from './views/foo'
import bar from './views/bar'

const routes = {
 '/foo': foo,
 '/bar': bar
}

// Router类, 用来控制页面根据当前URL切换
class Router {
 start() {
   // 点击浏览器后退/前进按钮时会触发window.onpopstate事件, 我们在这时切换到相应页面
   // https://developer.mozilla.org/en-US/docs/Web/Events/popstate
   window.addEventListener('popstate', () => {
     this.load(location.pathname)
   })

   // 打开页面时加载当前页面
   this.load(location.pathname)
 }

 // 前往path, 会变更地址栏URL, 并加载相应页面
 go(path) {
   // 变更地址栏URL
   history.pushState({}, '', path)
   // 加载页面
   this.load(path)
 }

 // 加载path路径的页面
 load(path) {
   // 创建页面实例
   const view = new routes[path]()
   // 调用页面方法, 把页面加载到document.body中
   view.mount(document.body)
 }
}

// new一个路由对象, 赋值为g.router, 这样我们在其他js文件中可以引用到
g.router = new Router()
// 启动
g.router.start()

现在我们还没有讲webpack配置所以页面还无法访问, 我们先从理论上讲解一下, 等会弄好webpack配置后再实际看页面效果. 当我们访问http://localhost:8100/foo的时候, 路由会加载 ./views/foo/index.js文件, 我们来看看这个文件:

// 引入全局对象
import g from '../../global'

// 引入html模板, 会被作为字符串引入
import template from './index.html'

// 引入css, 会生成







请到「今天看啥」查看全文