免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

怎么在webpack中搭建一個vue項(xiàng)目

這篇文章給大家介紹怎么在webpack中搭建一個vue項(xiàng)目,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),綏陽網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:綏陽等地區(qū)。綏陽做網(wǎng)站價(jià)格咨詢:18982081108

前期準(zhǔn)備

  1. webpack

  2. vue.js

  3. npm

  4. nodejs

  5. ES6語法

創(chuàng)建項(xiàng)目

mkdir vue-demo 
cd vue-demo

使用 npm init 命令 生成package.json文件

npm init

大概生成的package.json 如下:

{
 "name": "vue-demo",
 "version": "1.0.0",
 "description": "this is a vue demo",
 "main": "index.js",
 "scripts": {
 "test": "echo \"Error: no test specified\" && exit 1"
 },
 "license": "ISC",
 "dependencies": {
 }
}

引入webpack ,關(guān)于如何使用webpack 請參考官網(wǎng)

npm install webpack --save-dev

如果使用npm下載的速度過慢,可以使用淘寶的cnpm 鏡像

npm install -g cnpm –registry=https://registry.npm.taobao.org

輸入以上命令即可將npm指向國內(nèi)鏡像,使用時需將npm 替換成cnpm即可, 其他不變

在項(xiàng)目中創(chuàng)建webpack.config.js 文件

const path = require('path')
module.exports ={
 entry:'./src/main.js',
 output:{
  path:path.resolve(__dirname,'dist'),
  filename:"demo.js"
 }
}

使用webpack 命令編譯

webpack

編譯之后的項(xiàng)目目錄大概如下:

怎么在webpack中搭建一個vue項(xiàng)目

注意:在使用webpack命令之前 需先創(chuàng)建 index.html 和 main.js 文件 其中 main.js文件位于src 目錄下

index.html 的內(nèi)容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>vue demo</title>
</head>
<body>
 <script src="./dist/demo.js"></script>
</body>
</html>

main.js 的內(nèi)容如下

alert('hello world');

引入vue

npm install vue --save

執(zhí)行命令后會在package.json中新增如下代碼

"dependencies": { "vue": "^2.4.2" }

將main.js中的內(nèi)容修改為如下代碼

import Vue from 'vue'
var vm = new Vue({
 el:'#app',
 data:{
  msg:'hello vue'
 }
})

引入babel

npm install --save-dev babel-core babel-loader

由于在使用vue時會用到很多es6的語法,但是現(xiàn)在很多瀏覽器對es6的支持不是很好,所以在編譯時需要將這些語法轉(zhuǎn)換es5的語法,此時我們使用babel來進(jìn)行編譯。

babel的使用請閱讀官網(wǎng)文檔http://babeljs.cn/。

將babel加入到webpack.config.js 配置文件中:

const path = require('path')

module.exports ={
 entry:'./src/main.js',
 output:{
  path:path.resolve(__dirname,'dist'),
  filename:"demo.js"
 },
 module:{
  rules:[
   {
    test: /\.js$/,
    loader:"babel-loader",
    exclude: /node_modules/
   }
  ]
 }
}

然后命令行輸入 webpack 命令即可進(jìn)行編譯,再編譯完成后用瀏覽器打開index.html 文件,此時會發(fā)現(xiàn)瀏覽器控制臺出現(xiàn)以下錯誤:

[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

(found in <Root>)

這是因?yàn)檎谑褂玫氖莢ue的運(yùn)行時版本,而此版本中的編譯器時不可用的,我們需要把它切換成運(yùn)行時 + 編譯的版本,需要在配置文件中添加如下代碼

resolve: {
 alias: {
  'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
 }
 }

此時在運(yùn)行webpack 命令重新編譯,編譯后在訪問index.html頁面,頁面內(nèi)容如下圖

怎么在webpack中搭建一個vue項(xiàng)目

此時一個基于webpack的vue 項(xiàng)目就搭建好。

webpack的一些常用配置

在項(xiàng)目的實(shí)際開發(fā)中我們還會引入css、圖片以及字體等資源文件。這些文件的引入都需要相應(yīng)的加載器才能將其加載到項(xiàng)目中并正常使用。

下面只介紹部分我們需要的加載器的使用方法, 更多信息請查閱webpack加載器文檔。

css加載器

我們需要引入css-loader、和style-loader (安裝style-loader的目的是為了在html中以style的方式嵌入css )。

執(zhí)行命令

npm install --save-dev css-loader style-loader

在 webpack.config.js 中進(jìn)行如下配置

module: {
  rules: [{
   test: /\.js$/,
   loader: "babel-loader",
   exclude: /node_modules/
  }, {
   test: /\.css$/,
   loader: 'style-loader!css-loader'
  }]
 },

然后再src 目錄下 新建一個styles的文件夾并在里面添加一個main.css的文件,寫上以下內(nèi)容

#app{
 color:red;
}

然后再運(yùn)行 webpack 命令, 并重新加載index.html 文件 ,可見css已經(jīng)生效,效果如下圖

怎么在webpack中搭建一個vue項(xiàng)目 

圖片資源的加載

使用file-loader或者url-loader加載器進(jìn)行加載,他們都是用于打包文件和圖片資源的,兩者的區(qū)別是url-loader在file-loader的基礎(chǔ)上進(jìn)行了一次封裝。

在訪問網(wǎng)站時如果圖片較多,會發(fā)很多http請求,會降低頁面性能。這個問題可以通過url-loader解決。url-loader會將引入的圖片編碼,生成dataURl。相當(dāng)于把圖片數(shù)據(jù)翻譯成一串字符,再把這串字符打包到文件中,最終只需要引入這個文件就能訪問圖片了。

當(dāng)然,如果圖片較大,編碼會消耗性能。因此url-loader提供了一個limit參數(shù),小于limit字節(jié)的文件會被轉(zhuǎn)為DataURl,大于limit的還會使用file-loader進(jìn)行copy。

此處我們使用url-loader,由于它是基于file-loader的封裝,所以也需要引入file-loader。

npm install --save-dev file-loader url-loader

webpack.config.js 的rules 中增加如下配置

{
 test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
 loader: 'url-loader',
 options: {
  limit: 10000
 }
}

接下來就是將圖片引入到代碼中,需要在main.js和index.html 分別作如下修改:

main.js

import Vue from 'vue'
import './styles/main.css'
import logo from'./images/logo.png'

var vm = new Vue({
 el:'#app',
 data:{
  logo:logo,
  msg:'hello vue'
 }
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>vue demo</title>
</head>
<body>
 <div id="app">
  <img :src="logo" alt="logo" class="logo">
  {{msg}}
 </div>
 <script src="./dist/demo.js"></script>
</body>
</html>

最后運(yùn)行webpack 命令并訪問 index.html ,結(jié)果如下

怎么在webpack中搭建一個vue項(xiàng)目

在測試中發(fā)現(xiàn)當(dāng)圖片大于10KB的時候發(fā)現(xiàn)加載圖片失敗,找不到圖片,但此時在dist目錄下面是能看到已經(jīng)通過加載器加載成功了的圖片,再通過瀏覽器的開發(fā)者工具對圖片的引用路徑進(jìn)行檢查時,可以發(fā)現(xiàn)頁面中img的路徑不對,路徑中只有文件名缺失了前面的dist目錄,所以此時我們需要將main.js中的代碼進(jìn)行如下修改

logo:"./dist/"+logo,

重新編譯后圖片就顯示出來了。但是現(xiàn)在新的問題又出來了,由于我們在配置文件中配置了小于10kb的代碼將以 base64的形式內(nèi)聯(lián)在代碼中。所以此時是不需要 "./dist" 這個前綴的。 解決此問題有兩種辦法:

  1. 不使用base64的形式將圖片內(nèi)嵌到代碼中

  2. 將html文件放到dist目錄中 既然用了url-loader加載器則不推薦使用第一種。所以我們使用第二種方式。

將html文件放到dist目錄中最簡單的辦法就是把index.html文件復(fù)制到dist目錄中,然后將引入就是的代碼改為:

<script src="./demo.js" > </script>

main.js中改回原來的設(shè)置

logo:logo,

重新編譯后圖片在兩種情況下都可以加載出來了。

還有一中比較常用的方式是在編譯時自動在dist的目錄中創(chuàng)建一個html文件并將index.html中的內(nèi)容復(fù)制過去。此時我們需要時webpack的 HtmlWebpackPlugin 插件。

HtmlWebpackPlugin 插件

引入插件

npm install --save-dev html-webpack-plugin

webpack.config.js 中增加如下配置

const HtmlWebpackPlugin = require('html-webpack-plugin')
...

plugins:[
  new HtmlWebpackPlugin()
]

重新編譯后發(fā)現(xiàn)在dist目錄下生成了如下內(nèi)容的html的文件

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>Webpack App</title>
 </head>
 <body>
 <script type="text/javascript" src="demo.js"></script></body>
</html>

與我們原來自己的寫index.html相比,該文件缺少了下面這些這些內(nèi)容

<div id="app">
  <img :src="logo" alt="logo" class="logo">
  {{msg}}
 </div>

現(xiàn)在需要對配置文件做稍微的修改,讓html文件在創(chuàng)建的時候自動將index.html的中內(nèi)容復(fù)制過去。通過查閱該插件的文檔,可知需做如下修改:

plugins:[
  new HtmlWebpackPlugin({
   title: 'vue demo',
   template: 'index.html'   
  })
]

index.html 文件中 去除 script代碼,在重新編譯后,即可獲取我們需要的html文件

詳細(xì)參數(shù)配置請參考官方文檔

webpack-dev-server

在我們實(shí)際開發(fā)中需要將代碼部署在server中,而不是在瀏覽器中直接打開文件。此時我們需要使用webpack的 webpack-dev-server 。

webpack-dev-server 為我們提供了一個簡單的web服務(wù)器,并且能夠?qū)崟r重新加載(live reloading)。

npm install --save-dev webpack-dev-server

在webpack.config.js 文件中需要指定一個文件夾,告訴開發(fā)服務(wù)器需要從哪兒加載文件

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: "demo.js"
  },
  plugins: [
    new HtmlWebpackPlugin({
      title: 'vue demo',
      template: 'index.html'
    })
  ],
  devServer:{
    contentBase:"./dist"
  },
  module: {
    rules: [{
        test: /\.js$/,
        loader: "babel-loader",
        exclude: /node_modules/
      }, {
        test: /\.css$/,
        loader: 'style-loader!css-loader'
      }, {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000
        }
      }
    ]
  },
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
    }
  }
}

上面紅色字體的配置信息是告知webpack-dev-server, 在localhost:8080 下建立服務(wù),將 dist 目錄下的文件,作為可訪問文件。

讓我們在package.json中添加一個script腳本,可以直接運(yùn)行開發(fā)服務(wù)器(dev server):

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "dev":"webpack-dev-server --open",
  "build": "webpack"
 },

然后輸入如下命令

npm run dev

啟動完成后,瀏覽器會自動打開一個訪問 http://localhost:8080/ 的頁面

怎么在webpack中搭建一個vue項(xiàng)目

此時服務(wù)已啟動成功。

字體的加載

字體的加載方式與圖片的一樣也是用url-loader,配置如下

{
  test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
  loader: 'url-loader',
  options: {
    limit: 10000
  }
 }

vue-loader

在vue的開發(fā)過程中,通常我們需要寫.vue結(jié)尾的文件即組件,如app.vue

<template>
  <div id="app">
    <img src="./images/logo2.jpg" alt="logo" >
    {{msg}}
  </div>
</template>
<script>
  export default {
    name:'app',
    data(){
      return {
        msg:"hello vue !!"
      }
    }
  }
</script>

該文件需要通過vue-loader來進(jìn)行加載,現(xiàn)在我們需要做如下配置。通過 vue-loader 和vue-template-compiler來加載并編譯.vue文件

npm install --save-dev vue-loader vue-template-compiler

webpack.config.js 中

{
  test: /\.vue$/,
  loader: 'vue-loader'
 }

為了在vue中引入對.vue的使用,我們需進(jìn)行如下修改

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>vue demo</title>
</head>
<body>
  <div id="app">
  </div>
</body>
</html>

main.js

import Vue from 'vue'
import './styles/main.css'
import App from './app.vue'

new Vue({
  el: '#app',
  template: '<App/>',
  components: { App }
})

app.vue

<template>
  <div id="app">
    <img src="./images/logo.png" alt="logo" >
    {{msg}}
  </div>
</template>
<script>
  export default {
    name:'app',
    data(){
      return {
        msg: 'hello vue !!'
      }
    }
  }
</script>

修改完成后 運(yùn)行 npm run dev 命令 ,獲得如下效果的頁面

怎么在webpack中搭建一個vue項(xiàng)目 

熱部署

在上一步中,如果我們修改app.vue文件中的msg的參數(shù),可以看到頁面會自動刷新。但是此時是頁面全局刷新的,如果我們只想局部刷新即只刷新修改的部分,需要使用webpack的HotModuleReplacementPlugin插件,在webpack.config.js的plugins中添加下面的信息:

new webpack.HotModuleReplacementPlugin()

然后去package.json中,script 里面dev的值中加上 --hot -only

"dev": "webpack-dev-server --hot-only --open",

然后重啟服務(wù),再修改 msg 的值,會發(fā)現(xiàn)此時值的改變是局部刷新的。

生產(chǎn)環(huán)境

如果我們在瀏覽器的控制臺中發(fā)現(xiàn)有如下提示

怎么在webpack中搭建一個vue項(xiàng)目

意思時說項(xiàng)目現(xiàn)在運(yùn)行在開發(fā)環(huán)境中,在部署到正式環(huán)境下時,要確保它是處于production的模式。需要將代碼打包部署到生產(chǎn)環(huán)境時需要進(jìn)行如下配置:

var webpack = require('webpack')
module.exports = {
// ...
plugins: [
// ...
  new webpack.DefinePlugin({
    'process.env': {
      NODE_ENV: '"production"'
    }
  }),
  new webpack.optimize.UglifyJsPlugin({
    compress: {
      warnings: false
    }
  })
]}

關(guān)于怎么在webpack中搭建一個vue項(xiàng)目就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:怎么在webpack中搭建一個vue項(xiàng)目
文章分享:http://m.newbst.com/article6/jhesig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)網(wǎng)站維護(hù)網(wǎng)站營銷做網(wǎng)站手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)