vue-router-dome使用webpack 打包过程

vue-router做的 饿了不 webpack 打包过程

  1. 安装淘宝镜像cnpm 输入命令npm install -g cnpm

  2. 安装脚手架 cnpm install -g vue-cli

  3. 安装webpack-simple模板 并创建一个demo01的文件夹vue init webapck-simple demo01

  4. 进入demo01文件cd demo01

  5. 下载webpack-simple的依赖cnpm install

  6. 开启虚拟服务器cnpm run dev开启成功后自动打开浏览器弹出绿色大V就对了

  7. 然后按crtl+c关闭服务器,输入下载vue路由命令cnpm install vue-router -S

  8. 在scr里新建components文件是用来存放组件的文件。在components文件里新建5个组件文件:

    • main1.vue

    • main2.vue

    • main3.vue

    • main4.vue

    • main5.vue

  9. 一个.vue文件代表一个一个组件。一个组件代表一个页面

  • 首先修改第一个组件里的内容,把main1.vue里的改成如下代码:
 <template>
    <div class="main1">
        <h1>饿了不首页</h1>
        <router-link to="/main2"><img src="src/assets/kid-foods.jpg" alt=""></router-link>
     </div>
</template>
  • main2.vue里改成如下:
   <template>
            <div class="main">
                <h1>点餐列表页面</h1>
                <ul>
                   <li v-for="(value,index) in num">
                        <div class="left">
                      <router-link class="block" :to="{name:'game1',params:{lis:value.lis,imge:value.bg_pic,mname:value.dname}}">
                                <img :src="value.sm_pic" alt="">
                        </router-link>
                        </div>
                        <div class="right">
                            <strong>
                             <router-link class="block" :to="{name:'game1',params:{lis:value.lis,imge:value.bg_pic,mname:value.dname}}">
                                {{value.dname}}
                              </router-link>
                            </strong>
                            <p>{{value.descrp}}</p>
                            <span>价格:{{value.price}}</span>
                        </div>
                   </li>
                   <router-link to="/main1" class="fanhui-m1">返回首页</router-link>
                </ul>
            </div>
</template>
<script>
export default{
 data:function(){
            return {
                num:[
                    {
                        sm_pic: 'img/1_1.jpg',
                        bg_pic: 'img/1.jpg',
                        dname: '【酸甜开胃虾】',
                        descrp: '明虾、番茄酱、白糖、白醋、葱、姜、淀粉',
                        price: 12,
                        lis: "这是酸甜开胃虾的详情..唐帝国天启十三年春,渭城下了一场雨。这座位于帝国广阔疆域西北端的军事边城,为了防范草原上野蛮人入侵,四向的土制城墙被垒得极为厚实,看上去就像是一个墩实的土围子。干燥时节土墙上的浮土被西北的风刀子一刮便会四处飘腾,然后落在简陋的营房上,落在兵卒们的身上,整个世界都将变成一片土黄色,人们夜里入睡抖铺盖时都会抖起一场沙尘暴。正在春旱,这场雨来的恰是时辰,受到军卒们的热烈欢迎,从昨夜至此时的淅淅沥沥雨点洗涮掉屋顶的灰尘,仿佛也把人们的眼睛也洗的明亮了很多。至少马士襄此时的眼睛很亮。"
                    },

                    {
                        sm_pic: 'img/2_2.jpg',
                        bg_pic: 'img/2.jpg',
                        dname: '【桂香紫薯山药卷】',
                        descrp: '切片吐司、紫薯、铁棍山药、糖桂花、炼乳',
                        price: 12,
                        lis: "这是桂香紫薯山药卷的详情..心的本色该是如此。成,如朗月照花,深潭微澜,不论顺逆,不论成败的超然,是扬鞭策马,登高临远的驿站;败,仍滴水穿石,汇流入海,有穷且益坚,不坠青云的傲岸,有“将相本无主,男儿当自强”的倔强。荣,江山依旧,风采犹然,恰沧海巫山,熟视岁月如流,浮华万千,不屑过眼烟云;辱,胯下韩信,雪底苍松,宛若羽化之仙,知退一步,海阔天空,不肯因噎废食。"
                    },

                    {
                        sm_pic: 'img/3.jpg',
                        bg_pic: 'img/3_3.jpg',
                        dname: '【蒸饺】',
                        descrp: '鸡蛋、豆角酱肉馅、西红柿鸡蛋馅、猪生抽、生抽、海鲜酱油、糖、盐',
                        price: 12,
                        lis: "这是蒸饺的详情..每一次都在徘徊、孤单中坚强,每一次就算受伤也不闪泪光。”今天我唱起了那首我从来不愿唱的隐形的《隐形的翅膀》。在以前,当别人唱起这首略带忧伤的歌时我总会搞破坏,专捡一些欢乐的歌曲来消减一下悲伤的气氛,因为我不想带着悲伤活在这个世界上。今天,我并不是想抱怨人生的坎坷,我只想从中学会坚强。     (结尾)坚强的意志,坚强的信念,坚强的„„一切的一切都在支撑着我们。"
                    },

                    {
                        sm_pic: 'img/4.jpg',
                        bg_pic: 'img/4_4.jpg',
                        dname: '【口袋饼】',
                        descrp: '面粉、黄瓜、香肠、热水、土豆、盐、醋、生抽、油。',
                        price: 12,
                        lis: "这是口袋饼的详情..即使青春是一枝娇艳的花,但我明白,一枝独放永远不是春天,春天该是万紫千红的世界。  即使青春是一株大地伟岸的树,但我明白,一株独秀永远不是挺拔,成行成排的林木,才是遮风挡沙的绿色长城。即使青春是一叶大海孤高的帆,但我明白,一叶孤帆很难远航,千帆竞发才是大海的壮观。"
                    },

                    {
                        sm_pic: 'img/5_5.jpg',
                        bg_pic: 'img/5.jpg',
                        dname: '【橄榄油版酸奶蛋糕】', descrp: '鸡蛋、玉米淀粉、绵白糖、白醋、低筋粉、橄榄油、酸奶。',
                        price: 12,
                        lis: "这是橄榄油版酸奶蛋糕的详情..让我怎样感谢你? 当我走向你的时候,我原想收获一缕春风 ,你却给了我整个春天。      让我怎样感谢你 ?当我走向你的时候 我原想捧起一簇浪花,你却给了我整个海洋。      让我怎样感谢你 ?当我走向你的时候, 我原想撷取一枚红叶,你却给了我整个枫林。      让我怎样感谢你?当我走向你的时候, 我原想亲吻一朵雪花,你却给了我银色的世 界!"
                    },

                    {
                        sm_pic: 'img/6.jpg',
                        bg_pic: 'img/6_6.jpg',
                        dname: '【番茄肉酱意大利面】',
                        descrp: '这是开胃清蒸虾的描述...好吃好吃...',
                        price: 12,
                        lis: "这是番茄肉酱意大利面的详情...其实,感恩并不难,在父母眼中只要你理解他们,甚至只是当他们与你说话时你能着着他们而不是老盯着电视,当他们关心你时只要跟着答应而不是一味的顶撞,可我们连这点儿根本就算不上是感恩的要求都达不到,还何谈感恩。"
                    },

                    {
                        sm_pic: 'img/7_7.jpg',
                        bg_pic: 'img/7.jpg',
                        dname: '【小米椒爆炒小公鸡】',
                        descrp: '三黄鸡、杭椒、干红椒、新鲜小米椒、麻椒、八角、香叶、葱、姜、生抽',
                        price: 12,
                        lis: "这是小米椒爆炒小公鸡的详情..站在历史的海岸漫溯那一道道历史沟渠:楚大夫沉吟泽畔,九死不悔;魏武帝扬鞭东指,壮心不已;陶渊明悠然南山,饮酒采菊„„他们选择了永恒,纵然谄媚诬蔑视听,也不随其流扬其波,这是执著的选择;纵然马革裹尸,魂归狼烟,这是豪壮的选择;纵然一身清苦,终日难饱,也愿怡然自乐,躬耕陇亩,这是高雅的选择。在一番选择中,帝王将相成其盖世伟业,贤士迁客成其千古文章。"
                    }

                ]
            }
            }
            }
            </script>
  • main3.vue里改成如下:
 <template>
            <div class="main1">
                <img :src="MainImgs" alt="这是一张图片,请您返回点餐页面">
                <div class="fanhui-m1 bg_clo">{{ming}}</div>
                 <div class="left m4-auto">
                    <router-link to="/main2"  class="btn btn-info btn-lg">返回点餐页面</router-link>
                    </div>
                    <div class="left m4-auto">
                     <router-link  :to="{name:'game2',params:{m4Tname:tname+'的'}}" class="btn btn-warning btn-lg">购买{{tname}}</router-link>
                </div>
            </div>
        </template>
        <script>
        export default{
        data:function(){
            return{
                MainImgs:"",
                ming:"",
                tname:""
            }
        },
        beforeMount:function(){
            var MainImg=this.$route.params.imge.slice(10);
            this.MainImgs='src/assets'+MainImg;
            this.ming=this.$route.params.lis;
            this.tname=this.$route.params.mname;
            // //接受Mains的传过来的值
        }
    }
    </script>
  • main4.vue里改成如下:
 <template>
         <form class="mains">
            <h2>{{m4tname}}订单信息:</h2>
            <div class="input-group input-group-lg">
                    <span class="input-group-addon">姓名:</span>
                    <input type="text" @blur="onuserInput()" class="form-control" v-model="userInput" placeholder="请输入您的姓名">
            </div>
            <p id="text1">请输入正确的姓名,只限2-5位汉字</p>
            <div class="input-group input-group-lg">
                    <span class="input-group-addon">手机号:</span>
                    <input type="text" @blur="onphoneInput()" class="form-control" v-model="phoneInput" placeholder="请输入您的手机号">
            </div>
             <p id="text2">请输入正确的手机号</p>
            <div class="input-group  input-group-lg">
                    <span class="input-group-addon">地址:</span>
                    <input type="text" @blur="onaddrInput" class="form-control" v-model="addrInput" placeholder="请输入您的地址">
            </div>
             <p id="text3">请输入正确的地址</p>
            <div class="left m4-auto">
                <button type="button" class="btn btn-primary btn-lg" @click="testReg()">确认订单</button>
            </div>
            <div class="left m4-auto">
                 <button  @click="rese()" type="button" class="btn btn-success btn-lg">修改订单</button>
            </div>

         </form>
         </template>
         <script>
         export default{
        data:function(){
            return{
                userInput:"",
                phoneInput:"",
                addrInput:"",
                m4tname:""
            }
        },
        beforeMount:function(){
            this.m4tname=this.$route.params.m4Tname;
        },
        methods:{
            rese:function(){
                delIpu();
                alert('订单已重置,请您重新填写');
            },
//            姓名验证
            onuserInput:function(){
                var reg=/^[\u4E00-\uFA29]{2,5}$/;
                var text1=document.getElementById("text1");
                if(reg.test(this.userInput)){
                    text1.innerHTML='正确'
                    return true
                }else if(this.userInput==""){
                    text1.innerHTML='姓名不能为空'
                    return false
                }else{
                    text1.innerHTML='格式错误,请输入正确的姓名,只限2-5位汉字'
                    return false
                }
            },
//            手机号验证
                onphoneInput:function (){
                    var reg=/^1[34578]\d{9}$/;
                    var text2=document.getElementById("text2");
                    if(reg.test(this.phoneInput)){
                        text2.innerHTML='正确'
                        return true
                    }else if(this.phoneInput==""){
                        text2.innerHTML='手机号不能为空'
                        return false
                    }else {
                        text2.innerHTML='格式错误,请输入正确的国内大陆11位手机号'
                        return false
                    }
                },
            //            地址验证
            onaddrInput:function(){
                var reg=/^[\u4E00-\uFA29]|[0-9]{2,5}$/;
                var text3=document.getElementById("text3");
                if(reg.test(this.addrInput)){
                    text3.innerHTML='正确'
                    return true
                }else if(this.addrInput==""){
                    text3.innerHTML='地址不能为空'
                    return false
                }else {
                    text3.innerHTML='格式错误'
                    return false
                }
            },
            testReg:function(){
                if(this.onuserInput()&&this.onphoneInput()&&this.onaddrInput()){
                    this.$router.push("/main2");
                }else{
                    alert("填写不正确,请重新填写");
                     delIpu();
                }
            }
        }
        }
    </script>
  • main5.vue里改成如下:
<template>
     <div class="main5s">
            <h3>点餐成功!</h3>
            <router-link to="/main2" style="text-decoration: underline;">点击跳转..</router-link>
            <p><span id="time"></span>秒后返回点餐页面..</p>
     </div>
</template>
<script>
export default{
        mounted:function(){
            dianji(5)
        }
        }
 </script>
  1. 这样就算把components里的组件修改完成了。然后就是想办法怎么让他显示在页面上。
    首先需要在index.html里写:
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>dome02</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <style>
      
        *{
        padding: 0;
        margin: 0;
    }
    .main{
        margin: auto;
    }
    a{
        text-decoration: none;
        color: black;
    }
    a:hover{
        text-decoration: blink;
    }
    /*main2*/
    .main ul{
        display: block;
        margin: auto;
        text-align: -webkit-center;
    }
    .main1{
        width: 900px;
        margin: auto;
    }
    .main1 img{
        width: 600px;
        display: block;
        margin: auto;
    }
    h1{
        text-align: center;
        margin-bottom: 10px;
    }
    li{
        width: 900px;
        list-style: none;
        margin-top: 20px;
        border:solid 1px #ccc;
        padding:10px;
        border-radius: 5px;
        overflow: hidden;
    }
    .left{
        float: left;
    }
    .right{
        float: left;
        margin-left: 50px;
        text-align: left;
    }
    .right p{
        margin-top: 10px;
        margin-bottom: 10px;
    }
    /*main3*/
    .fanhui-m1{
        display: inline-block;
        width: 922px;
        padding: 20px;
        text-align: center;
        background: #1ea8aa;
        text-decoration: none;
        color: #fff;
        margin-top: 20px;
        margin-bottom: 20px;
    }
    .fanhui-m2{
        display: inline-block;
        padding: 10px;
        text-align: center;
        background: #1ea8aa;
        font-size: 18px;
        text-decoration: none;
        color: #fff;
        margin-top: 20px;
    }
    .block{
        display: block;
    }
    .bg_clo{
        background: #ffd810;
        color: #000;
    }
    /*main4*/
    .mains{
        width: 700px;
        margin: auto;
    }
    .input-group{
        margin-top: 20px;
        margin-bottom: 20px;
    }
    .m4-auto{
        width: 50%;
        text-align: center;
    }
    /*main5*/
    .fw{
        font-weight:bold;
        font-size: 20px;
    }
    .main5s{
        width: 700px;
        height: 200px;
        margin: auto;
        padding-top: 40px;
        background: #e0ff72;
        text-align: center;
    }
      </style>
  </head>
  <body>
    <div id="app"></div>
    <script>
    function delIpu(){
        var inp=document.querySelectorAll('input');
        for(var i=0;i<inp.length;i++){
            inp[i].value='';
        }
    }
//
    function dianji(n){
        var num=n;
        var time=document.getElementById('time');
        time.innerHTML=num;
        name = setInterval(function() {
            num--;
            console.log(num);
            time.innerHTML=num;
            if(num==0){
                clearInterval(name);
                window.location ='http://ansonznl.coding.me/vue-router-dome01/#/main2'
            }
        }, 1000)}
</script>
    <script src="/dist/build.js"></script>
  </body>
</html>

因为我尽量减少把代码的复制粘贴,所以就把js和css写在index.html里了。如需外引请自便,

  • 然后我们修改src=>App.vue里的内容:
<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'app',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

  • 然后修改src=> mian.js里的内容:
import Vue from 'vue'
import vueRouter from "vue-router"
import App from './App.vue'
//银排至路由
import routerConfig from "./router.config.js"



Vue.use(vueRouter)
//用vueRouter//暴露
const myRouter=new vueRouter(routerConfig)
new Vue({
  el: '#app',
  render: h => h(App),
    router:myRouter
})

  • 然后在src里新建一个配置路由的文件,文件名就取router.config.js吧 修改为:
//配置路由
import Main1 from "./components/main1.vue"
import Main2 from "./components/main2.vue"
import Main3 from "./components/main3.vue"
import Main4 from "./components/main4.vue"
import Main5 from "./components/main5.vue"

export default{
    // 暴露文件
routes:[
    {path:"/main1",component:Main1},
    {path:"/main2",component:Main2},
    {name:"game1",path:"/main3",component:Main3},
    {name:"game2",path:"/main4",component:Main4},
    {name:"game3",path:"/main5",component:Main5},
    {path:"/",component:Main1}
]
}
  • 最后你应该吧main2.vue里的文件所用的图片放上去,放到src=>assets文件里:


    image.png

当然图片不重要。路径和名字一样就行

  • 然后执行cnpm run dev就OK了
  • 最后一步, 把dist文件编译出来。不编译出来的话只能在服务器看到的。编译出来可直接打开。
  • 下载webpack ···cnpm install webpack -g···
  • 执行webpack
  • 发现目录中多了一个dist文件就对了。
  • 然后把index.html里的倒数第三行
    <script src="/dist/build.js"></script>
    改为
    <script src="dist/build.js"></script>
    就OK了。关掉git bash
    直接打开index.html 就可以看到了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351