详解Vue快速零配置的打包工具——parcel


Posted in Javascript onJanuary 16, 2018

本文介绍了Vue快速零配置的打包工具——parcel,分享给大家,具体如下:

特性

  1. 快速打包
  2. 打包所有资源
  3. 自动转换
  4. 代码拆分
  5. 模块热替换
  6. 友好的错误记录

如何工作

Parcel 将 资源 树转换成 包(bundles) 树。许多其它的打包工具基本上是基于 JavaScript 资源,还有附加在其上的其它格式的资源。例如,在 JS 文件中内联成字符串。 Parcel是对文件类型无感知的,它能按你所期待的方式那样与任意类型的资源工作,且毋须配置。

构建资源树

Parcel 接受单个入口资源作为输入,可以是任意类型:JS、HTML、CSS、图片文件等等。在 Parcel 中定义了许多不同的资源类型,它知道如何去处理特定的文件类型。资源会被解析,资源的依赖会被提取,资源会被转换成最终编译好的形态。此过程创建了一个资源树。

构建文件束树

一旦资源树被构建好,资源会被放置在文件束树中。首先一个入口资源会被创建成一个文件束,然后动态的 import() 会被创建成子文件束 ,这引发了代码的拆分。当不同类型的文件资源被引入,兄弟文件束就会被创建。例如你在 JavaScript 中引入了 CSS 文件,那它会被放置在一个与 JavaScript 文件对应的兄弟文件束中。如果资源被多于一个文件束引用,它会被提升到文件束树中最近的公共祖先中,这样该资源就不会被多次打包。

打包

在文件束树被构建之后,每个文件束都会被 packager 写到一个特定文件类型的文件中。packagers 知道如何从每个资源中将代码合并起来,生成到最终被浏览器加载的文件中。

配置

初始化项目

npm install -g parcel
 mkdir xxx && cd xxx && npm init -y

转换

Babel

npm install babel-preset-env --save-dev

根目录配置.babelrc

{
  "presets": ["env"]
 }

PostCSS

npm install postcss-modules autoprefixer --save-dev

根目录配置.postcssrc

{
  "modules": true,
  "plugins": {
   "autoprefixer": {
    "grid": true
   }
  }
 }

支持vue

npm install parcel-plugin-vue --save-dev

添加entry

import App from './App.vue'
 import router from './router/index.js'
 import './assets/js/rem.js'
 window.onload = () => {
  const vm = new Vue({
   el: '#app',
   router,
   render: h => h(App)
  })
 }

配置index.html

<body>
  <div id="app"></div>
  <script src="入口文件"></script>
 </body>

配置路由(代码拆分--懒加载)

{
   path: 'home',
   component: () =>import('../pages/home.vue')
 }

import()返回的是一个promise,所以也可以用 async/await 语法,当你想在本地使用 async/await 语法,请引入 babel-polyfill

区分生产环境和开发环境,配置package.json.

dev --- 开发环境

build --- 生产环境

"scripts": {
   "dev": "parcel index.html -p 3700",
   "build": "parcel build index.html"
  }

大功告成

访问http://localhost:3700/home

详解Vue快速零配置的打包工具——parcel

此demo是vue + parcel + grid +stylus完成 : parcel-vue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
jQuery满意度星级评价插件特效代码分享
Aug 19 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 Javascript
Vue项目服务器部署之子目录部署方法
May 12 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 #Javascript
动态加载权限管理模块中的Vue组件
Jan 16 #Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 #Javascript
解析Angular 2+ 样式绑定方式
Jan 15 #Javascript
基于jquery的on和click的区别详解
Jan 15 #jQuery
仿淘宝JSsearch搜索下拉深度用法
Jan 15 #Javascript
vue2.0 父组件给子组件传递数据的方法
Jan 15 #Javascript
You might like
PHP中对数据库操作的封装
2006/10/09 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php异常处理使用示例
2014/02/25 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
php 的反射详解及示例代码
2016/08/25 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Django 前后台的数据传递的方法
2017/08/08 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
Python初识逻辑与if语句及用法大全
2021/08/07 Python