从零开始用webpack+vue 搭建前端工程的基本过程

webpack+vue 搭建前端工程的基本过程

目标:

  • 配置开发时的前端工程

环境

  • win10家庭中文版+node6.13.1

提示

  • 此教程不适合没有vue和webpack基础的人看,若要自己构建前端工程,请先了解一些vue和webpack的基础知识

详细步骤

1.初始化项目

1.1创建项目文件

1.2初始化package.json文件

npm init

1.3安装webpack vue vue-loader

npm i webpack vue vue-loader --save

1.4安装css-loader vue-template-compiler依赖项

npm i css-loader vue-template-compiler --save

2.创建源码文件

2.1在项目目录下创建src目录

2.2 在src目录下创建app.vue文件

//vue文件的标准模式
//模板插入html
<template>
    <div id="weather">
        {{text}}}
    </div>
</template>

//script插入js
<script>
    export default{
        data(){
            return{
                text:'天气查询'
            }
        }
    }
</script>

//style 插入样式
<style>
    #weather{
        color: aqua;
        font-size: 20px;
    }
</style>

此时的app.vue文件无法直接在页面上展示,需要对webpack进行配置。

3.webpack配置实现加载各种静态资源以及CSS处理器

3.1在项目目录下创建webpack.confing.js

3.2 配置出口,入口文件以及相应的文件module

const path = require('path');//加载path模块

module.exports = {
//人口文件配置
    entry:path.join(__dirname,'src/index.js'),
//出口文件配置
    output:{
        filename:'bundle.js',
        path:path.join(__dirname,'dist')
    },
//规则配置
    module: {
        rules: [
            {
                test:/\.vue$/,
                loader: 'vue-loader'
            },
            {
                test:/\.css$/,
                use:[
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test:/\.less$/,
                use:[
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            {
                test:/\.(gif|jpg|jpeg|png|svg)$/,
                use:[
                    {
                        loader: 'url-loader',
                        options: {
                            limit:1024,
                            name:'[name]-weather.[ext]'
                        }
                    }
                ]
            }
        ]
    }
};

3.3 在src目录下创建index.js

// 引入vue,app.vue
import Vue from 'vue'
import App from './app.vue'

//创建html节点
const root = document.createElement('div');
document.body.appendChild(root);

//创建一个vue,并将内容引入到html里面
new Vue({
    render:(h) => h(App)
}).$mount(root);

3.4在package.json文件里面加入脚本

"build": "webpack --config webpack.config.js"

3.5安装文件module处理依赖库

npm i style-loader url-loader file-loader css-loader less less-loader --save

3.6然后将项目bulid

npm run build

在这里就已经实现了用webpack加载静态资源的功能。

4.配置webpack-dev-server

4.1修改package.json中的script

"build": "cross-env NODE_ENV=production webpack --config webpack.config.js",//修改之前的bulid
"dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js"//添加dev

4.2安装依赖项cross-env

npm i cross-env --save

4.3再次配置webpack.config.js

//引入各种模块
const path = require('path');
const HTMLPlugin = require('html-webpack-plugin');
const webpack = require('webpack');

//判断是否是dev
const isDev = process.env.NODE_ENV === 'development';

const config = {
    target: 'web',
    entry:path.join(__dirname,'src/index.js'),
    output:{
        filename:'bundle.js',
        path:path.join(__dirname,'dist')
    },
    module: {
        rules: [
            {
                test:/\.vue$/,
                loader: 'vue-loader'
            },
            {
                test:/\.css$/,
                use:[
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test:/\.less$/,
                use:[
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            {
                test:/\.(gif|jpg|jpeg|png|svg)$/,
                use:[
                    {
                        loader: 'url-loader',
                        options: {
                            limit:1024,
                            name:'[name]-weather.[ext]'
                        }
                    }
                ]
            }
        ]
    },
    plugins: [
        //判断环境引用插件
        new webpack.DefinePlugin({
            'process.env':{
                NODE_ENV:isDev ? '"development"' : '"production"'
            }
        }),
        new HTMLPlugin()
    ]
};

if(isDev){
    config.devtool = '#cheap-module-eval-source-map';//在浏览器映射源代码
    config.devServer = {
        port:8000,//服务器端口
        host:'0.0.0.0',
        overlay:{
            error:true,//在页面显示错误
        },
        hot:true//只对组件进行修改,不刷新全部页面
    };
//新增插件
    config.plugins.push(
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoEmitOnErrorsPlugin()
    );
}

module.exports = config;

4.4安装重新配置的需要的依赖项

npm i html-webpack-plugin webpack-dev-server@2.11.2 --save

到这里基本的项目配置就完成了,然后就可以开始开发了。

下面为开发需要的依赖:

"dependencies": {
    "cross-env": "^5.1.4",
    "css-loader": "^0.28.11",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.1.0",
    "less": "^3.0.1",
    "less-loader": "^4.1.0",
    "style-loader": "^0.20.3",
    "url-loader": "^1.0.1",
    "vue": "^2.5.16",
    "vue-loader": "^14.2.2",
    "vue-template-compiler": "^2.5.16",
    "webpack": "^3.10.0",
    "webpack-dev-server": "^2.11.2"
  }
  

项目目录结构

Contents.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容