vue依賴webpack的環境配置(一)

創建項目

$ mkdir [project name]
$ cd [project name]
$ npm init

安裝webpack、webpack-dev-server以及相關loader

# 安裝webpack,webpack-dev-server
$ npm install webpack
$ npm install webpack-dev-server
# 爲項目安裝其他依賴
$ npm i webpack-merge css-loader style-loader file-loader url-loader babel-core babel-loader babel-plugin-transform-runtime babel-preset-es2015 babel-preset-stage-0 babel-runtime vue vue-loader vue-html-loader vue-style-loader vue-hot-reload-api -D

webpack-merge:開發環境和生產環節的webpaak配置文件的配置合併

css-loader:編譯寫入css

style-loader:把編譯後的css整合進html

file-loader:編譯寫入文件,默認情況下生成文件的文件名是文件名與MD5哈希值的組合

vue:vue主程序

vue-laoder:編譯寫入.vue文件

vue-html-loader:編譯vue的template部分

vue-style-loader:編譯vue的樣式部分

vue-hot-reload-api:webpack對vue實現熱替換

babel-core:ES2015編譯核心

babel-loader:編譯寫入ES2015文檔

babel-preset-es2015:ES2015語法

babel-preset-stage-0:開啓測試功能

babel-runtime:babel執行環境

更多安裝方式和loader解釋參考文檔https://doc.webpack-china.org/guides/getting-started/

新建index.html
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="app">{{message}}</div>
<!--“源”代碼是用於書寫和編輯的代碼。“分發”代碼是構建過程產生的代碼最小化和優化後的“輸出”目錄,最終將在瀏覽器中加載:-->
<!--bundle是分發代碼-->
<script src="dist/bundle.js"></script>
</body>
</html>

創建/src/mian.js
新建src文件夾,然後在裏面創建main.js

//js源文件
import Vue from "vue";
new Vue({
    el:'#app',
    components:{
        message:'test'
    }
});

配置webpack.configure.js
大多數項目會需要很複雜的設置,這就是爲什麼 webpack 要支持配置文件。這比在終端(terminal)中輸入大量命令要高效的多,所以讓我們創建一個取代以上使用 CLI 選項方式的配置文件:

var path=require('path');
module.exports={
    //定義輸入文件
    entry:'./src/main.js',
    // 輸出文件
    output:{
        // 文件名
        filename:'bundle.js',
        // 文件地址
        path:path.resolve(__dirname,'dist')
    },
    module: {
        rules: [
            //vue轉化
            {
                test:/\.vue$/,
                loader:'vue-loader'
            },
            // css轉化
            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },
            // 圖片轉化
            {
                test: /\.(png|svg|jpg|gif)$/,
                use: [
                    'file-loader'
                ]
            },
            {
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                use: [
                    'file-loader'
                ]
            },
            {
                test: /\.(csv|tsv)$/,
                use: [
                    'csv-loader'
                ]
            },
            {
                test: /\.xml$/,
                use: [
                    'xml-loader'
                ]
            }
        ]
    },
    resolve: {
// Vue v2.x之後NPM Package默認設置只會生成runtime-only 版本,若要使用standalone功能則需如下設置

// 否則會報錯:Failed to mount component: template or render function not defined.
    alias: {
            vue: 'vue/dist/vue.js'
        }
        // extensions: ['', '.js', '.vue']
    }
};

運行
我們在終端下輸入命令 webpack
打開瀏覽器可以看到效果
進一步實現vue的組件化思想

修改index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h1>wewew</h1>
    <!--hello模塊-->
    <hello></hello>
</div>
<!--<div id="app">{{message}}</div>-->
<script src="dist/bundle.js"></script>
</body>
</html>

新建hello.vue

<template>
    <strong>{{vueMsg}}</strong>
</template>
<script>
    module.exports = {
        data() {
            return {vueMsg:'Vue hello world'}
        }
    }
</script>
<style scoped>
    strong{
        background-color: #f00;
    }
</style>

在main.js中加入對hello.js的引入

import helloVue from './../view/hello.vue';
import Vue from "vue";
// var helloVue=require('./../view/hello.vue')
new Vue({
    el:'#app',
    components:{
    //hello
        hello:helloVue
    }
});

再次webpack一下,我們就可以在瀏覽器上看到效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章