国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

webpack從零開(kāi)始搭建多頁(yè)面(一):webpack起步到運(yùn)行一個(gè)簡(jiǎn)單的demo

EsgynChina / 2802人閱讀

摘要:文件夾用來(lái)存放供瀏覽器讀取的文件,這個(gè)是打包成的文件。在文件下手動(dòng)建立一個(gè)文件,并寫(xiě)入下面的代碼。配置出口文件的地址在版本后,支持多出口配置。可以防止不同操作系統(tǒng)之間的文件路徑問(wèn)題,并且可以使用相對(duì)路徑按照預(yù)期工作。

搭建webpack_demo1項(xiàng)目,使其運(yùn)行起來(lái)

webpack的強(qiáng)大就不介紹了,我們直接動(dòng)手做起來(lái),我們從零開(kāi)始一步步搭建一個(gè)多頁(yè)面的系統(tǒng),多參考webpack中文文檔

cmd命令:

mkdir webpack_demo1             #創(chuàng)建文件夾
cd webpack_demo1                #進(jìn)入文件夾
npm install -g webpack          #全局安裝webpack
npm init                        #初始化
npm install --save-dev webpack  #安裝webpack包

可以安裝淘寶鏡像 $ npm install -g cnpm --registry=https://registry.npm.taobao.org 上面的npm就可以寫(xiě)成cnpm

demo1的目錄:

|——node_modules
├─dist           # 打包后的文件
|   ├─greeter.js #就放了一句話
|   |──main.js   #入口文件
├─src            #當(dāng)前項(xiàng)目的源碼
|   ├─greeter.js #就放了一句話
|  |──main.js    #入口文件
|——webpack.config.js #webpack配置文件
|——package.json      #依賴包
1、建項(xiàng)目目錄并完成第一次打包
進(jìn)入上我們建立的webpack_demo1目錄,建立兩個(gè)文件夾,分別是src文件夾和dist文件夾:
src文件夾:用來(lái)存放我們編寫(xiě)的javascript代碼,可以簡(jiǎn)單的理解為用JavaScript編寫(xiě)的模塊。

dist文件夾:用來(lái)存放供瀏覽器讀取的文件,這個(gè)是webpack打包成的文件。

可以理解成src是源碼文件,dist是我們編譯打包好的文件;一個(gè)用于開(kāi)發(fā)環(huán)境,一個(gè)用于生產(chǎn)環(huán)境。
在dist文件下手動(dòng)建立一個(gè)index.html文件,并寫(xiě)入下面的代碼。



    
    webpack_demo1


    
在src文件夾下建立main.js和greeter.js,編寫(xiě)我們的JavaScript代碼,main.js是我們的入口文件。
在main.js文件里寫(xiě): 
    const greeter=require("./greeter.js");
    document.getElementById("root").innerHTML = greeter();
在greeter.js文件里寫(xiě):  
    module.export = function(){
        return "第一個(gè)webpack demo";
    };

第一次打包

在終端下 寫(xiě)命令:webpack "entry file" "destination for bundled file"

entery file: 入口文件的路徑,這里就是src/main.js

destination for bundled file: 填寫(xiě)打包后存放的路徑,這里就是dist/bundle.js

所以終端寫(xiě):webpack src/entry.js dist/bundle.js(webpack非全局安裝執(zhí)行:node_modules/.bin/webpack src/main.js dist/bundle.js)

成功后,在dist文件夾下會(huì)出現(xiàn)一個(gè)bundle.js

2、通過(guò)配置文件來(lái)使用Webpack打包
在根目錄下新建一個(gè)名為webpack.config.js的文件,
標(biāo)準(zhǔn)的webpack配置模板:
     module.exports={
        
         entry:{}, //配置入口文件的地址,可以是單一入口,也可以是多入口。
        
         output:{}, //配置出口文件的地址,在webpack2.X版本后,支持多出口配置。
         
         module:{},//配置模塊:主要是解析CSS和圖片轉(zhuǎn)換壓縮等功能。
         
         plugins:[],//配置插件,用于生產(chǎn)模版和各項(xiàng)功能
        
         devServer:{} //配置webpack開(kāi)發(fā)服務(wù)功能
     }
     
我們?cè)谄渲袑?xiě)入如下所示的簡(jiǎn)單配置代碼: 入口文件路徑/打包后文件的存放路徑:
    const webpack = require("webpack");
    const path = require("path");
    module.exports = {
        entry:  __dirname + "/src/main.js",//已多次提及的唯一入口文件
        output: {
            path: __dirname + "/dist",//打包后的文件存放的地方
            filename: "bundle.js"http://打包后輸出文件的文件名
        },
        module:{},
    
        plugins:[],
    
        devServer:{}
    };
    //__dirname”是node.js中的一個(gè)全局變量,它指向當(dāng)前執(zhí)行腳本所在的目錄。
    

第二次打包 (先刪掉dist中已有的bundle.js)

在終端下 寫(xiě)命令:webpack(wepack非全局安裝執(zhí)行:node_modules/.bin/webpack)

成功后,在dist文件夾下會(huì)出現(xiàn)一個(gè)bundle.js

3、更快捷的執(zhí)行打包

在命令行中輸入命令"node_modules/.bin/webpack"這樣的操作是比較煩人的,不過(guò)值得慶幸的是npm可以引導(dǎo)任務(wù)執(zhí)行,
對(duì)npm進(jìn)行配置后可以在命令行中使用簡(jiǎn)單的npm start命令來(lái)替代上面略微繁瑣的命令:

在package.json中對(duì)scripts對(duì)象添加一條下命令:"start": "wepack"

注意:package.json中的script會(huì)安裝一定順序?qū)ふ颐顚?duì)應(yīng)位置,本地的node_modules/.bin路徑就在這個(gè)尋找清單中,所以無(wú)論是全局還是局部安裝的Webpack,都不需要寫(xiě)前面那指明詳細(xì)的路徑了。

第三次打包:(先刪掉dist中已有的bundle.js)

在命令行中輸入:npm start
成功后,在dist文件夾下會(huì)出現(xiàn)一個(gè)bundle.js

使用webpack構(gòu)建本地服務(wù)器
讓瀏覽器監(jiān)聽(tīng)你的代碼的修改,并自動(dòng)刷新顯示修改后的結(jié)果: 

在終端輸入:npm install --save-dev webpack-dev-server

在package.json中對(duì)scripts對(duì)象添加一條下命令用以開(kāi)啟本地服務(wù)器: "server": "webpack-dev-server --open"

在webpack.config.js中添加devServer:

 devServer:{
    contentBase:path.resolve(__dirname,"dist"), //設(shè)置基本目錄結(jié)構(gòu),本地服務(wù)器所加載的頁(yè)面所在的目錄
    host:"localhost",//服務(wù)器的IP地址,可以使用IP也可以使用localhost
    inline: true,//實(shí)時(shí)刷新
    compress:true,//服務(wù)端壓縮是否開(kāi)啟,一般設(shè)置為開(kāi)啟,
    historyApiFallback: true,//不跳轉(zhuǎn)
    port:1818 //配置服務(wù)端口號(hào),建議不使用80,很容易被占用,這里使用了1818
 }
 

在頁(yè)面上已經(jīng)可以看到一句話了" 第一個(gè)webpack demo ";

關(guān)于入口和出口配置的寫(xiě)法及其解釋

entry入口:

單入口有以下寫(xiě)法:
    entry:  __dirname + "/src/main.js",
    entry:  "./src/main.js",
多入口有以下寫(xiě)法:
    entry:{
       index: "./src/main.js",
       selectList:"./src/***.js"
     },
     

output出口:

output: {
    path: __dirname + "/dist",//打包后的文件存放的地方
    // path:path.resolve(__dirname,"dist"),
    filename: "bundle.js"http://打包后輸出文件的文件名
    //filename:"[name].js"
    // filename:"js/[name].js"
    // filename:"js/[name].bundle-[chunkhash:8].js" 
},

filename: "[name].js"
filename: "[name]-[hash].js"
    打包文件名: main.js
                main-6672c04f6c9672410a61.js
                
filename:"js/[name].js":
    打包目錄是:|——dist
               |    |——js
               |    |   |——main.js
  
filename:"js/[name].bundle-[chunkhash:8].js" :
      打包目錄是:|——dist
                 |    |——js
                 |    |   |——main.bundle-d0dea2df.js
                 
[name]:是根據(jù)入口文件的名稱,打包成相同的名稱,有幾個(gè)入口文件,就可以打包出幾個(gè)文件。

[chunkhash:8]: 數(shù)字和字母組成的8位哈希值

 __dirname:是node.js中的一個(gè)全局變量,它指向當(dāng)前執(zhí)行腳本所在的目錄,打印出來(lái)是:webpackwebpack_demo1
 
 path:使用Node內(nèi)置的path模塊,并在它前面加上__dirname這個(gè)全局變量。
      可以防止不同操作系統(tǒng)之間的文件路徑問(wèn)題,并且可以使用相對(duì)路徑按照預(yù)期工作。
         
建議使用:filename:"js/[name].bundle-[chunkhash:8].js":
可以通過(guò)命中緩存,以降低網(wǎng)絡(luò)流量,使網(wǎng)站加載速度更快,
然而,如果我們?cè)诓渴鹦掳姹緯r(shí)不更改資源的文件名,瀏覽器可能會(huì)認(rèn)為它沒(méi)有被更新,
就會(huì)使用它的緩存版本。由于緩存的存在,當(dāng)你需要獲取新的代碼時(shí),就會(huì)顯得很棘手。         

關(guān)于緩存:看文檔

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/107316.html

相關(guān)文章

  • 手把手教你從零搭建react局部熱加載環(huán)境

    摘要:有沒(méi)有辦法實(shí)現(xiàn)就局部刷新呢當(dāng)然是有第十步執(zhí)行為了實(shí)現(xiàn)局部熱加載,我們需要添加插件。 前言 用了3個(gè)多月的vue自認(rèn)為已經(jīng)是一名合格的vue框架api搬運(yùn)工,對(duì)于vue的api使用到達(dá)了一定瓶頸,無(wú)奈水平有限,每每深入底層觀賞源碼時(shí)候都迷失了自己。 遂決定再找個(gè)框架學(xué)習(xí)學(xué)習(xí)看看能否突破思維局限,加上本人早已對(duì)React、RN技術(shù)垂涎已久,于是決定找找教程來(lái)學(xué)習(xí)。無(wú)奈第一步就卡在了環(huán)境搭...

    quietin 評(píng)論0 收藏0
  • 從零開(kāi)始搭建個(gè)vue-ssr(下)

    摘要:開(kāi)始改建補(bǔ)充安裝依賴與上一次不同,這次我們基于進(jìn)行改建,已經(jīng)有了很多依賴庫(kù)了,但我們?nèi)涡枰a(bǔ)充一個(gè)核心修改客戶端的配置修改文件,添加插件添加了這個(gè)配置以后,重新啟動(dòng)項(xiàng)目通過(guò)地址就可以訪問(wèn)到,頁(yè)面中出現(xiàn)的內(nèi)容就是所需要的。 從零開(kāi)始搭建一個(gè)vue-ssr 前言 上次我們已經(jīng)實(shí)現(xiàn)了從零開(kāi)始,搭建一個(gè)簡(jiǎn)單的vue-ssr的demo:從零開(kāi)始搭建一個(gè)vue-ssr(上)。那么這次呢,我們基于v...

    Jochen 評(píng)論0 收藏0
  • 從零開(kāi)始搭建Vue組件庫(kù)——VV-UI

    摘要:各個(gè)大廠也相繼宣布開(kāi)源。但是也會(huì)存在一些問(wèn)題,比如每個(gè)公司可能需要的業(yè)務(wù)組件不盡相同,或者我們想自己開(kāi)發(fā)一套屬于自己的組件庫(kù),來(lái)增強(qiáng)對(duì)組件的可控性。 前言: 前端組件化是當(dāng)今熱議的話題之一,也是我們?cè)陂_(kāi)發(fā)單頁(yè)應(yīng)用經(jīng)常會(huì)碰到的一個(gè)問(wèn)題,現(xiàn)在我們有了功能非常完善的Element-UI。各個(gè)大廠也相繼宣布開(kāi)源XXX-UI。但是也會(huì)存在一些問(wèn)題,比如每個(gè)公司可能需要的業(yè)務(wù)組件不盡相同,或者我們...

    BothEyes1993 評(píng)論0 收藏0
  • 從零開(kāi)始搭建Vue組件庫(kù)——VV-UI

    摘要:各個(gè)大廠也相繼宣布開(kāi)源。但是也會(huì)存在一些問(wèn)題,比如每個(gè)公司可能需要的業(yè)務(wù)組件不盡相同,或者我們想自己開(kāi)發(fā)一套屬于自己的組件庫(kù),來(lái)增強(qiáng)對(duì)組件的可控性。 前言: 前端組件化是當(dāng)今熱議的話題之一,也是我們?cè)陂_(kāi)發(fā)單頁(yè)應(yīng)用經(jīng)常會(huì)碰到的一個(gè)問(wèn)題,現(xiàn)在我們有了功能非常完善的Element-UI。各個(gè)大廠也相繼宣布開(kāi)源XXX-UI。但是也會(huì)存在一些問(wèn)題,比如每個(gè)公司可能需要的業(yè)務(wù)組件不盡相同,或者我們...

    wthee 評(píng)論0 收藏0
  • 從零開(kāi)始最小實(shí)現(xiàn) react 服務(wù)器渲染

    摘要:從零開(kāi)始最小實(shí)現(xiàn)服務(wù)器渲染前言最近在寫(xiě)的時(shí)候想到,如果我部分代碼提供,部分代碼支持,那我應(yīng)該如何寫(xiě)呢不想拆成個(gè)服務(wù)的情況下而且最近寫(xiě)的項(xiàng)目里面也用過(guò)一些服務(wù)端渲染,如,自己也搭過(guò)的項(xiàng)目,確實(shí)開(kāi)發(fā)體驗(yàn)都非常友好,但是友好歸友好,具體又是如何實(shí) showImg(https://segmentfault.com/img/bVMbjB?w=1794&h=648); 從零開(kāi)始最小實(shí)現(xiàn) react...

    cheukyin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<