Parcel.js + Vue 2.x 極速零配置打包體驗

来源:http://www.cnblogs.com/wisewrong/archive/2017/12/24/8086239.html
-Advertisement-
Play Games

繼 Browserify、Webpack 之後,又一款打包工具 Parcel 橫空出世 Parcel.js 的官網有這樣的自我介紹 “極速零配置Web應用打包工具” 簡單接觸了一下,單從效率上來說,確實要比 webpack 強上不少,可坑也挺多,未來升級之後應該會逐漸普及 官方文檔:https:// ...


繼 Browserify、Webpack 之後,又一款打包工具 Parcel 橫空出世

Parcel.js 的官網有這樣的自我介紹 “極速零配置Web應用打包工具”

簡單接觸了一下,單從效率上來說,確實要比 webpack 強上不少,可坑也挺多,未來升級之後應該會逐漸普及

官方文檔:https://parceljs.org/getting_started.html

官方 GitHub:https://github.com/parcel-bundler/parcel

 

一、基本用法

Parcel 可以用 npm 或 yarn 安裝,個人習慣用 npm,這篇博客將基於 npm 講解

首先需要全局安裝 Parcel.js    // 當前版本 1.3.0

npm install -g parcel-bundler

然後寫一個配置文件...不對,這不是 webpack,這是 parcel, 零配置打包

直接創建項目目錄,用寫個一個簡單的傳統頁面

 

然後在項目根目錄打開命令行工具,輸入以下命令

parcel index.html -p 3030

然後在瀏覽器中打開 http://localhost:3030/ 就能打開剛纔開發的頁面

上面的命令中 -p 用於設置埠號,如果不設置,則預設啟動 1234 埠

parcel 支持熱更新,會監聽 html、css、js 的改變並即時渲染

// 實際上通過 src 引入的 css、js 無法熱更新

開發完成後,輸入以下命令進行打包

parcel build index.html

打包後會生成 dist 目錄

橋豆麻袋,說好的打包呢?怎麼還是這麼多文件?

騷年莫急,這是用傳統寫法寫的頁面,連 package.json 都沒有,接下來改造成模塊化的項目,就能看到打包的效果了

 

好吧,那我先手動打開 index.html 看看效果...等等...為啥 css 沒被載入?

這是因為打包後的路徑都是絕對路徑,放在伺服器上沒問題,如果需要本地打開,就得手動修改為相對路徑

 

 

二、應用在模塊化項目中

正片開始,首先將上面的項目改造成模塊化項目

通過 npm init -y 命令創建一個預設的 package.json,並修改啟動和打包命令

這樣就可以直接通過 npm run dev 啟動項目,npm run build 執行打包了

 

之前是全局安裝的 parcel,實戰中更推薦在項目中添加依賴

npm install parcel-bundler -S


上面是一個傳統頁面,使用 link 引入的 css

既然要改造為模塊化項目,那就只需要引入一個 main.js,然後在 main.js 中引入其他的 css 和 js 文件

所以需要用到 import 等 ES6 語法,那就安裝一個 babel 吧

npm install babel-preset-env -S

 然後在根目錄創建一個 .babelrc 文件,添加以下配置:

{
  "presets": ["env"]
}

再安裝一個 css 轉換工具,比如 autoprefixer 

npm install postcss-modules autoprefixer -S

創建 .postcssrc 文件:

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

官方文檔還推薦了一款編譯 html 資源的插件 PostHTML,不過這裡暫時不需要

 

自行改造代碼,最後 npm run build 打包

可以看到 js 和 css 已經整合,其內容也經過了 babel 和 autoprefixer 的編譯

 

 

三、在 Vue 項目中使用 Parcel

官方文檔給出了適用於 react 項目的配方

但我常用的是 vue,研究了好久,終於找到了方法

依舊使用 index.html 作為入口,以 script 引入 main.js

<!-- index.html -->

<body>
  <div id="app"></div>
  <script src="./src/main.js"></script>
</body>
// main.js

import 'babel-polyfill'
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './css/common.css'

Vue.config.productionTip = false

const vm = new Vue({
  el: '#app',
  router,
  render: h => h(App)
})

 

這裡要推薦一個很厲害的插件 parcel-plugin-vue,它讓 parcel 和 vue 成功牽手

再加上之前提到的 babel、autoprefixer,最後的 package.json 是這樣的:

{
  "name": "ParcelVue",
  "version": "1.0.0",
  "description": "The project of parcel & vue created by Wise Wrong",
  "main": "main.js",
  "scripts": {
    "dev": "parcel index.html -p 3030",
    "build": "parcel build index.html"
  },
  "keywords": [
    "parcel",
    "vue"
  ],
  "author": "wisewrong",
  "license": "ISC",
  "devDependencies": {
    "autoprefixer": "^7.2.3",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "parcel-bundler": "^1.3.0",
    "parcel-plugin-vue": "^1.4.0",
    "postcss-modules": "^1.1.0",
    "vue-loader": "^13.6.1",
    "vue-style-loader": "^3.0.3",
    "vue-template-compiler": "^2.5.13"
  },
  "dependencies": {
    "vue": "^2.5.13",
    "vue-router": "^3.0.1"
  }
}

一定記得在根目錄創建 .postcssrc 和 .babelrc 文件
然後 npm install 安裝依賴, npm run dev 啟動項目,npm run build 打包項目


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在每個節點添加 id 和 pid, id 表示當前節點編號,pid 表示父節點編號 第一步:在頁面顯示菜單位置,添加 ul設置 class=”ztree” 第二步:開啟簡單數據格式支持 第三步:編寫樹形菜單數據 第四步:生成樹形菜單 ...
  • 匿名函數:創建函數時,不指定函數名的函數。此種函數只能運行一次,可以避免變數全局污染,保護變數。 匿名函數可以回調使用,比如 btn.addEventListener("click",function(){...}) 也可以用匿名函數聲明函數名,比如var abc=function (){conso ...
  • 1、 對選項卡面板區域 div 設置 class=”easyui-tabs” 2、 對選項卡面板區域添加多個 div,每個 div 就是一個選項卡(每個面板一定設置 title) 3、 設置面板 fit 為 true ,自適應父容器大小 4、 設置選項卡 closable 為 true ,添加可關閉 ...
  • 1、對摺疊面板區域 div 設置 class=”easyui-accordion” 2、在區域添加多個 div, 每個 div 就是一個面板 (每個面板一定要設置 title 屬性)。 3、設置面板屬性 fit 為 true,自適應父容器大小 ...
  • 一、前言 前段時間寫博客分享和介紹了阿裡雲的UI框架NG-ZORRO(博客請查看:http://www.cnblogs.com/donaldtdz/p/7892960.html),結合近段時間對.Net開源框架ABP的學習。完成將ABP前端框架替換成阿裡雲的NG-ZORRO。 二、替換說明 ABP版 ...
  • 作者: "zyl910" [TOC] 一、緣由 由於在ES6之前,JavaScript中沒有定義類(class)語法。導致大家用各種五花八門的辦法來定義類,代碼風格不統一。而且對於模擬面向對象的三大支柱“封裝”、“繼承”、“多態”,更是有許多專門的深度研究,實現辦法更加複雜,不利於JavaScrip ...
  • 前言 本文介紹 框架的核心 的實現 由於在最新版本中,已經沒有考慮 等低版本,因此在選用方案時沒有採用 方式,而是直接基於 實現 交互原理 具體H5和Native的交互原理可以參考前文的 交互原理圖如下: 預計的最終效果 如果一步一步來分析,最後再看效果,可能會很枯燥,甚至還有點化簡為繁的樣子。(感 ...
  • 淺拷貝只複製指向某個對象的指針,而不複製對象本身,新舊對象還是共用同一塊記憶體。修改新對象也會修改了舊對象 深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共用記憶體,修改新對象不會改到原對象。 為了讓對象數組能深拷貝,通過百度對各種深拷貝函數的理解,融合出一種對數組和對象的深拷貝函數 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...