初始Webpack——下載&打包js文件

https://www.webpackjs.com/

打包過(guò)的文件其實(shí)我們經(jīng)常在使用膊夹,比如我們經(jīng)常引入的jquery只需要引入一個(gè)文件卦碾。開發(fā)者不可能是把那么多代碼寫到一個(gè)文件中窒百,而是分模塊功能開發(fā),再通過(guò)打包工具真友,打包到一個(gè)文件中

一般兼容性處理

谷歌Chrome瀏覽器內(nèi)核是V8引擎赡突,可以解析絕大多數(shù)的es6語(yǔ)法。不能夠保證用戶都是使用谷歌瀏覽器月而,很多老版本瀏覽器根本帶不起來(lái),所以要考慮兼容問(wèn)題议纯。

這個(gè)網(wǎng)站可以進(jìn)行獲取與瀏覽器兼容的 JavaScript

https://babeljs.io/

但是我們可以通過(guò)Wabpack打包功能去轉(zhuǎn)換兼容性處理和模塊化處理父款,工程化開發(fā)

一、下載webpack

(1)在CMD中全局安裝

1.使用webpack在本地全局安裝webpack工具
npm install webpack@4 -g
npm install webpack-cli@3 -g
2.查看版本
webpack -v
3.卸載
npm remove webpack -g

(2)在vscode當(dāng)前項(xiàng)目下安裝Wabpack

1.在當(dāng)前項(xiàng)目下初始化一個(gè)包的描述文件
npm init -y
2.下載webpack在 -D開發(fā)環(huán)境依賴中
npm install webpack@4 -D
npm install webpack-cli@3 -D

二、要打包的代碼都放在src文件夾并引入入口文件中

(1)在a.js文件定義并導(dǎo)出一個(gè)方法

export  let add= function (num1,num2){
    return num1+num2
}

(2)導(dǎo)入模塊的兩種方法:

①.直接在b.js導(dǎo)入a模塊
import a from './a.js'
let num1=100
let num2=200
console.log(a.add(num1,num2));
②在b.js中導(dǎo)入a模塊中的指定方法

后期a.js可能有很多方法憨攒,有些并不要世杀,所以用{}結(jié)構(gòu)出a模塊需要的方法

import {add} from './a.js'    
let num1=100
let num2=200
console.log(add(num1,num2));

(3)所有參與打包的文件,都應(yīng)該在入口文件中引入

main.js是入口文件
所有參與打包的文件肝集,都應(yīng)該在入口文件中引入
import './js/b.js'
import './css/a.css'
導(dǎo)入home組件
import Home from './componets/Home.vue'
圖片資源
先把三張圖片導(dǎo)進(jìn)來(lái)
import i1 from './img/1.jpg'
import i2 from './img/2.jpg'
import i3 from './img/3.jpg'
再創(chuàng)建三個(gè)對(duì)象
let img1=document.createElement('img')
img1.src=i1
let img2=document.createElement('img')
img2.src=i2
let img3=document.createElement('img')
img3.src=i3
再獲取app容器
let app=document.getElementById('app')
將三張圖片添加到容器中
app.appendChild(img1)
app.appendChild(img2)
app.appendChild(img3)

導(dǎo)入vue
注意在工程化的開發(fā)中瞻坝,引入的vue是不帶處理模板功能的,其實(shí)引入的是vue.runtime.esm.js,而不是完成的vue.js
三分之一的體積是處理模板解析的杏瞻,所有vue在工程化給去除了
所以必須要手動(dòng)調(diào)用render函數(shù)的方式處理創(chuàng)建虛擬DOM并展示到頁(yè)面中
import Vue from 'vue' //按住ctrl點(diǎn)vue會(huì)跳轉(zhuǎn)vue文件里的package.json
手動(dòng)去改一下vue包中package.json所刀,里的入口文件main.js和模塊為dise.vue.js
即可在頁(yè)面中使用當(dāng)前vue實(shí)例里的數(shù)據(jù)了
Vue.js文件中是帶解析模板的,而vue.runtime.esm.js是不帶解析模板的捞挥,所以要改一下
Vue.config.productionTip = false

引入ElementUI組件庫(kù)
import ElementUI from 'element-ui';
引入ElementUI樣式
import 'element-ui/lib/theme-chalk/index.css';
因?yàn)镋lementUI組件庫(kù)是一個(gè)插件浮创,插件必須要通過(guò)Vue.use(插件名稱)
Vue.use(ElementUI);
new Vue({

如果采用這種方式就不需要去改vue的配置文件了。
不修改配置文件就要用渲染函數(shù)去解析內(nèi)容
//     render:function(h){
直接建立標(biāo)簽掛載到el指定的標(biāo)簽容器里
//  return h('h1',this.name+'---'+this.age)
//     },
render:(h)=>h(Home),
  data(){
      return{
          name:'張三',
          age:30
      }
  }
}).$mount('#app2')

三砌函、使用webpack打包js文件

在項(xiàng)目的根路徑里面新建一個(gè)webpack.config.js是webpack的配置文件

(1)這個(gè)文件里只能使用commonjs模塊化的規(guī)范

const path=require('path')
// path模塊是node.js的內(nèi)置模塊斩披,用于處理路徑
module.exports={
    // 整個(gè)項(xiàng)目必須要指定一個(gè)打包的入口文件 
    entry:'./src/main.js',
    // 出口最終文件打包后的文件輸出到什么地方去(必要要指定一個(gè)絕對(duì)路徑)
    // 項(xiàng)目打包后輸出的目錄
    output:{ 
    //   需要用path模塊去做拼接Node.js path 模塊提供了一些用于處理文件路徑的小工具
    filename:'app.js',//最終打包出去的文件名
    //打包文件的輸出路徑
    //path是內(nèi)置模塊,它有個(gè)方法是resolve用于路徑拼接胸嘴,
    // __dirname全局變量返回的是當(dāng)前項(xiàng)目的絕對(duì)路徑
    // “dist”是我們打包后文件保存的目錄雏掠,將來(lái)文件保存在當(dāng)前項(xiàng)目的dist目錄里斩祭,到時(shí)會(huì)自己建
    path:path.resolve(__dirname,"dist") 

    },
    // loader
    // plugins
    // 模式,采用何種方式打包:有兩種方式1:開發(fā)模式(development),生產(chǎn)模式(production)
    // 生產(chǎn)模式會(huì)對(duì)打包只有的代碼壓縮劣像,最終會(huì)把代碼以production模式打包
    // 開發(fā)模式會(huì)保留完成的代碼和調(diào)試代碼
    mode:'development'
}

(2)基本配置好了在終端輸入webpack運(yùn)行,使用生產(chǎn)模式:

1.png

(3)使用開發(fā)模式摧玫,明顯開發(fā)模式比生產(chǎn)模式大了很多耳奕。最終我們會(huì)使用生產(chǎn)模式進(jìn)行打包

2.png

(4)在dist文件夾下新建html頁(yè)面,引入app.js

打開頁(yè)面控制臺(tái)就可以看到剛才打包的js輸出的內(nèi)容了

<script src="./app.js"></script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咕别,更是在濱河造成了極大的恐慌船侧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆怕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)对竣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榜配,“玉大人否纬,你說(shuō)我怎么就攤上這事〉叭欤” “怎么了临燃?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我膜廊,道長(zhǎng)乏沸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任溃论,我火速辦了婚禮屎蜓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钥勋。我一直安慰自己炬转,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布算灸。 她就那樣靜靜地躺著扼劈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菲驴。 梳的紋絲不亂的頭發(fā)上荐吵,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音赊瞬,去河邊找鬼先煎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巧涧,可吹牛的內(nèi)容都是我干的薯蝎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼谤绳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼占锯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起缩筛,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤消略,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瞎抛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艺演,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年桐臊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胎撤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豪硅,死狀恐怖哩照,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懒浮,我是刑警寧澤飘弧,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布识藤,位于F島的核電站,受9級(jí)特大地震影響次伶,放射性物質(zhì)發(fā)生泄漏痴昧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一冠王、第九天 我趴在偏房一處隱蔽的房頂上張望赶撰。 院中可真熱鬧,春花似錦柱彻、人聲如沸豪娜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瘤载。三九已至,卻和暖如春卖擅,著一層夾襖步出監(jiān)牢的瞬間鸣奔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工惩阶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挎狸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓断楷,卻偏偏與公主長(zhǎng)得像锨匆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脐嫂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容