飞道的博客

webpack-2-所有配置-template-vue终极使用方案

486人阅读  评论(0)
  1. 创建文件夹

    打包好后,index.html 引入bundle.js文件即可

  2. 生成package.json
    npm init
    在package.json中添加脚本命令
    "build": "webpack"

3.生成package-lock.json文件,不用管
npm install

  1. 创建webpack.config.js文件
const path = require('path')
module.exports = {
   
  entry: './src/main.js',
  output: {
   
    path: path.resolve(__dirname,'dist'),
    filename: 'bundle.js',
    publicPath: 'dist/'
  },
 	module: {
   
    rules: [
      {
   
        test: /\.css$/,
        //css-loader只负责加载,不负责解析--!
        use: [ 'style-loader', 'css-loader']
      },
      {
   
        test: /\.less$/,
        use: [{
   
          loader: "style-loader" // creates style nodes from JS strings
        }, {
   
          loader: "css-loader" // translates CSS into CommonJS
        }, {
   
          loader: "less-loader" // compiles Less to CSS
        }]
      },
      {
   
        test: /\.(png|jpg|gif|jpeg)$/,
        use: [
          {
   
            loader: 'url-loader',
            options: {
   
              limit: 1024,
              name: 'img/[name].[hash:8].[ext]'
            },
          }
        ]
      },
      {
   
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
   
          loader: 'babel-loader',
          options: {
   
            presets: ['es2015']
          }
        }
      },
      {
   
        test: /\.vue$/,
        use: {
   
          loader: 'vue-loader'
        }
      }
    ]
  }
}
  1. 导入loader
cnpm install webpack@3.6.0 --save-dev
cnpm install --save-dev css-loader@2.0.2
cnpm install --save-dev style-loader@0.23.1
cnpm install --save-dev less-loader@4.1.0 less@3.9.0
cnpm install --save-dev url-loader@1.1.2
cnpm install --save-dev file-loader@3.0.1
cnpm install --save-dev babel-loader@7.1.5 babel-core@6.26.3 babel-preset-es2015@6.24.1
cnpm install vue@2.5.21 --save
cnpm install vue-loader@14.2.2 vue-template-compiler@2.5.21 --save-dev
import Vue from 'vue'
const app = new Vue({
   
  el: '#app',
  data: {
   
    message: 'hello, vue'
  }
})


runtime-only->代码中,不可以有任何的template
runtime-compiler->代码中,可以由template,因为有compiler可以用于编译template
修改配置

const path = require('path')
module.exports = {
   
  entry: './src/main.js',
  output: {
   
    path: path.resolve(__dirname,'dist'),
    filename: 'bundle.js',
    publicPath: 'dist/'
  },
  module: {
   },
  resolve: {
   
    alias: {
   
      'vue$': 'vue/dist/vue.esm.js'
    }
  }
}

SPA(simple page web application) -> vue-router

el 和 tempate的关系

当既有template又有el时,template会进行替换之前el#app标记的内部。

import Vue from 'vue'
new Vue({
   
  el: '#app',
  template: `    
    <div>
      {
    {message}}
      <button @click="btnClick">点击</button>
    </div>
  `,
  data: {
   
    message: 'hello, vue'
  },
  methods: {
   
    btnClick: function () {
   
      alert('111')
    }
  }
})

index.html

<body>
<!--真实开发,只有div,里面组件数据改变,内容一点都不改-->
<!--main.js 需要使用templates -->
<div id="app"></div>
<script src="./dist/bundle.js"></script>
</body>

运行时vue会将div替换成template
这样写vue会非常大!!!

Vue终极使用方案

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--真实开发,只有div,里面组件数据改变,内容一点都不改-->
<!--main.js 需要使用templates -->
<div id="app"></div>
<script src="./dist/bundle.js"></script>
</body>
</html>


import Vue from 'vue'
const App = {
   
    template: `
        <div>   
            <h1>{
    {message}}</h1>
            <input type="text" v-model="message">
            <button @click="btnClick">按钮</button>
        </div>
    `,
    data: function(){
   
        return{
   
            message: 'hello ,vue !'
        }
    },
    methods: {
   
        btnClick: function () {
   
            alert('btnClick')
        }
    }
}


const app = new Vue({
   
    el: '#app',
    //2.使用组件
    template: '<App/>',
    //1.注册组件
    components:{
   
        App: App
    }
})


root最重要的地方


终极写法,
1.创建App.Vue

<template>
    <div>
        <h1 class=".title">{
   {
   message}}</h1>
        <input type="text" v-model="message">
        <button @click="btnClick">按钮</button>
    </div>
</template>

<script>
    export default {
   
        name: "App",
        data: function(){
   
            return{
   
                message: 'hello ,vue !'
            }
        },
        methods: {
   
            btnClick: function () {
   
                alert('btnClick')
            }
        }
    }
</script>

<style scoped>
    .title{
   
        color: green;
    }
</style>
  1. main.js 引用
import Vue from 'vue'
import App from './vue/App'
const app = new Vue({
   
    el: '#app',
    //2.使用组件
    template: '<App/>',
    //1.注册组件
    components:{
   
        App: App
    }
})

转载:https://blog.csdn.net/m0_37642480/article/details/115959599
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场