Webpack下创建vue项目-非vue-cli

开始准备
  • 初始化工程目录
    shell npm init -y
  • 安装vue

    npm install vue
  • 安装 webpack

    npm install webpack --save-dev
  • webpack 装载各个模块

    # 用于解析HTML文件的插件
    npm install html-webpack-plugin
    # 安装vue项目所需要的loader
    npm install css-loader file-loader babel-core babel-loader babel-preset-es2015 vue-loader
    # 暂且称为vue模板解析器吧
    npm install vue-template-compiler
  • 手动创建目录
  • mark

文件解析
  • packpage.json
    • 这个文件自动生成的,不用管它。都是你自己填的一些信息
    • 具体内容如下:

      {
        "name": "vue-demo2",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1",
          "start":"webpack-dev-server --inline --host localhost --port 7080 --config webpack.config.js"
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "devDependencies": {
          "webpack": "^4.5.0",
          "webpack-cli": "^2.0.14"
        },
        "dependencies": {
          "babel-core": "^6.26.0",
          "babel-loader": "^7.1.4",
          "babel-preset-es2015": "^6.24.1",
          "css-loader": "^0.28.11",
          "file-loader": "^1.1.11",
          "html-webpack-plugin": "^3.2.0",
          "vue": "^2.5.16",
          "vue-loader": "^14.2.2",
          "vue-template-compiler": "^2.5.16",
          "webpack-dev-server": "^3.1.3"
        }
      }
      
  • webpack.config.js
    • 每个工程下都需要有一个叫webpack.config.js 的配置文件.关系到webpack的打包过程。定义入口和输出等
    • 具体内容如下

      let Webpack = require('webpack');
      let path = require('path');
      let HtmlWebpackPlugin = require('html-webpack-plugin');
      module.exports = {
          mode: 'development',
          entry: './src/index.js',
          output: {
              path: path.resolve(__dirname, 'build'),
              filename: 'index.js'
          },
          module: {
              rules: [
                  {
                      test: /\.vue$/,
                      loader: 'vue-loader'
                  },
      
                  {
                      test: /\.css$/,
                      loader: 'style-loader!css-loader'
                  },
      
                  /* 用babel来解析js文件并把es6的语法转换成浏览器认识的语法 */
                  {
                      test: /\.js$/,
                      loader: 'babel-loader',
                      /* 排除模块安装目录的文件 */
                      exclude: /node_modules/
                  }
              ]
          },
          plugins: [
              new HtmlWebpackPlugin({
                  template: __dirname + "/index.html" //模板文件.默认会生成index.html文件。你也可以自己制定filename
      
              }),
      
          ]
      };
代码编写
  • hello.vue

    <template>
    <div>
    
        <h1> {{ message }}</h1>
    </div>
    </template>
    <script>
    export default {
      data() {
        return {
          message: "Hello Vue"
        };
      }
    };
    </script>
    <style>
        h1{
            color: brown;
        }
    </style>
    
  • index.js

    import vue from 'vue';//npm 安装过vue.可以直接import
    import hello from './vue/hello.vue'
    
    new vue({
        el:'#app',//这个是在模板文件中需要替换的div ID.
         render:function(createElement){
            return createElement(hello);
         }
    
    })
  • index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <div id="app"></div>
    </body>
    </html>

注意: 如果package.js中的脚本名称是start,例子中就是,使用npm start 即可启动,否则使用npm run 脚本名称启动

源代码地址:github

转载于:https://www.cnblogs.com/coder163/p/8782324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值