详解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 相关文章推荐
Jquery获取和修改img的src值的方法
Feb 17 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
浅谈jquery高级方法描述与应用
Oct 04 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
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
5.PHP的其他功能
2006/10/09 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
Python ljust rjust center输出
2008/09/06 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python2.7安装图文教程
2018/03/13 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
专升本自我鉴定
2013/10/10 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
委托书如何写
2014/08/30 职场文书
党员作风建设整改方案
2014/10/27 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js