• vue24-webpack+vue-loader


    手动配置自己:
        webpack+vue-loader
    
        webpack加载模块
    -------------------------------------
    如何运行此项目?
        1. npm install    或者    cnpm install
        2. npm run dev
            ->  package.json
                "scripts":{
                    "dev":"webpack-dev-server --inline --hot --port 8082"
                }
    
    以后下载模块:
        npm install <package-name>  --save-dev
    
    EADDRINUSE    端口被占用
    
    少了:
        webpack-dev-server
        webpack
    ----------------------------------------
    .vue 结尾,之后称呼组件
    ----------------------------------------
    路由:
        vue-router
    
            ->  如何查看版本:
                bower info vue-router
    
        路由使用版本: 0.7.13
    配合vue-loader使用:
    1. 下载vue-router模块
        cnpm install vue-router@0.7.13
    2. import VueRouter from 'vue-router'
    
    3. Vue.use(VueRouter);
    
    4. 配置路由
        var router=new VueRouter();
        router.map({
            路由规则
        })
    5. 开启
        router.start(App,'#app');
    
    注意:
        之前: index.html    ->   <app></app>
        现在: index.html    ->   <div id="app"></div>
    
        App.vue    ->   需要一个 <div id="app"></div>  根元素
    
    home    news
    ---------------------------------------------
    路由嵌套:
        和之前一模一样
    --------------------------------------------
    上线:
        npm run build
            ->    webpack -p
    --------------------------------------------
    脚手架:
        vue-cli——vue脚手架
            帮你提供好基本项目结构
    
    本身集成很多项目模板:
        simple        个人觉得一点用都没有
        webpack    可以使用(大型项目)
                Eslint 检查代码规范,
                单元测试
        webpack-simple    个人推荐使用, 没有代码检查    √
    
        browserify    ->  自己看
        browserify-simple
        
    --------------------------------------------
    基本使用流程:
    1. npm install vue-cli -g    安装 vue命令环境
        验证安装ok?
            vue --version
    2. 生成项目模板
        vue init <模板名> 本地文件夹名称
    3. 进入到生成目录里面
        cd xxx
        npm install
    4. npm run dev
    --------------------------------------------    

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <div id="app"></div>
        <script src="build.js"></script>
    <!--
    入口main.js:
    
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import App from './App.vue'
    import routerConfig from './router.config.js'
    
    Vue.use(VueRouter);
    
    
    //配置路由
    const router=new VueRouter();
                
    router.map(routerConfig);
        routerConfig:
                    //专门配置路由规则
                    //引入模块
                    import Home from './components/Home.vue'  :
                                                Home.vue:
                                                <template>
                                                    <h3>我是主页</h3>
                                                    <ul>
                                                        <li><a v-link="{path:'/home/login'}">用户登录</a></li>
                                                        <li><a v-link="{path:'/home/reg'}">用户注册</a></li>
                                                    </ul>
                                                    <div class="box">
                                                        <router-view></router-view>
                                                    </div>
                                                </template>
                                                <style scope>
                                                    .box{
                                                        border:1px dashed #000;
                                                    }
                                                </style>
                    import News from './components/News.vue'
                                                News.vue:
                                                <template>
                                                    <h3>我是新闻</h3>
                                                    <ul>
                                                        <li><a v-link="{path:'/news/detail/001'}">第一条新闻</a></li>
                                                        <li><a v-link="{path:'/news/detail/002'}">第二条新闻</a></li>
                                                    </ul>
                                                    <router-view></router-view>
                                                </template>
                    import Login from './components/Login.vue'
                                                    Login.vue:
                                                    <template>
                                                        <h3>用户登录</h3>
                                                    </template>
                    import Reg from './components/Reg.vue'
                                                    Reg.vue:
                                                    <template>
                                                        <h3>用户注册</h3>
                                                    </template>
                    import Detail from './components/Detail.vue'  : 
                                            <template>
                                                <strong>
                                                    {{$route.params | json}}
                                                    <br>
                                                    {{$route.query | json}}
                                                </strong>
                                            </template>
                    export default{
                        '/home':{
                            component:Home,
                            subRoutes:{
                                'login':{
                                    component:Login
                                },
                                'reg':{
                                    component:Reg
                                }
                            }
                        },
                        '/news':{
                            component:News,
                            subRoutes:{
                                'detail/:id':{
                                    component:Detail
                                }
                            }
                        }
                    }
    router.redirect({
        '/':'/home'
    });
    
    router.start(App,'#app');
                    App.vue:
                    <template>
                        <div id="app">
                            <h3>vue-loader+ vue-router</h3>
                            <div>
                                <a v-link="{path:'/home'}">主页</a>
                                <a v-link="{path:'/news'}">新闻</a>
                            </div>
                            <router-view></router-view>
                        </div>
                    </template>
                    <script>
                        
                    </script>
                    <style>
                        body{
                            background: #ccc
                        }
                        .v-link-active{
                            font-size: 20px;
                            color: #f60;
                        }
                    </style>
    -->
    </body>
    </html>

    main.js

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import App from './App.vue'
    import routerConfig from './router.config.js'
    
    Vue.use(VueRouter);//使用vue-router必写
    
    
    //配置路由
    const router=new VueRouter();
    
    router.map(routerConfig);
    
    router.redirect({
        '/':'/home'
    });
    
    router.start(App,'#app');

    App.vue

    <template>
        <div id="app">
            <h3>vue-loader+ vue-router</h3>
            <div>
                <a v-link="{path:'/home'}">主页</a>
                <a v-link="{path:'/news'}">新闻</a>
            </div>
            <router-view></router-view>
        </div>
    </template>
    <script>
        
    </script>
    <style>
        body{
            background: #ccc
        }
        .v-link-active{
            font-size: 20px;
            color: #f60;
        }
    </style>

    Menu.vue

    <template>
        <ul>
            <li v-for="val in list">
                {{val}}
            </li>
        </ul>
    </template>
    <script>
        export default{
            data(){
                return {
                    list:['apple','banana','orange']
                }
            }
        }
    </script>

    router.config.js

    //专门配置路由规则
    
    //引入模块
    import Home from './components/Home.vue'
    import News from './components/News.vue'
    import Login from './components/Login.vue'
    import Reg from './components/Reg.vue'
    import Detail from './components/Detail.vue'
    
    
    export default{
        '/home':{
            component:Home,
            subRoutes:{
                'login':{
                    component:Login
                },
                'reg':{
                    component:Reg
                }
            }
        },
        '/news':{
            component:News,
            subRoutes:{
                'detail/:id':{
                    component:Detail
                }
            }
        }
    }

    Detail.vue   Home.vue   Login.vue   News.vue   Reg.vue

    <template>
        <strong>
            {{$route.params | json}}
            <br>
            {{$route.query | json}}
        </strong>
    </template>
    <template>
        <h3>我是主页</h3>
        <ul>
            <li><a v-link="{path:'/home/login'}">用户登录</a></li>
            <li><a v-link="{path:'/home/reg'}">用户注册</a></li>
        </ul>
        <div class="box">
            <router-view></router-view>
        </div>
    </template>
    <style scope>
        .box{
            border:1px dashed #000;
        }
    </style>
    <template>
        <h3>用户登录</h3>
    </template>
    <template>
        <h3>我是新闻</h3>
        <ul>
            <li><a v-link="{path:'/news/detail/001'}">第一条新闻</a></li>
            <li><a v-link="{path:'/news/detail/002'}">第二条新闻</a></li>
        </ul>
        <router-view></router-view>
    </template>
    <template>
        <h3>用户注册</h3>
    </template>

    webpack.config.js

    module.exports={
        entry:'./main.js',
    
        output:{
            path:__dirname,
            filename:'build.js'
        },
    
        module:{
            loaders:[
                {test:/.vue$/, loader:'vue'},
                {test:/.js$/, loader:'babel', exclude:/node_modules/}
            ]
        },
        babel:{
            presets:['es2015'],
            plugins:['transform-runtime']
        }
    };

    package.json

    {
      "name": "vue-loader-demo",
      "version": "1.0.0",
      "description": "",
      "main": "main.js",
      "scripts": {
        "dev": "webpack-dev-server --inline --hot --port 8083",
        "build":"webpack -p"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "babel-core": "^6.17.0",
        "babel-loader": "^6.2.5",
        "babel-plugin-transform-runtime": "^6.15.0",
        "babel-preset-es2015": "^6.16.0",
        "babel-runtime": "^6.11.6",
        "css-loader": "^0.25.0",
        "vue-hot-reload-api": "^1.3.2",
        "vue-html-loader": "^1.2.3",
        "vue-loader": "^8.5.4",
        "vue-style-loader": "^1.0.0",
        "webpack": "^1.13.3",
        "webpack-dev-server": "^1.16.2"
      },
      "dependencies": {
        "vue": "^1.0.28",
        "vue-router": "^0.7.13"
      }
    }
  • 相关阅读:
    不同长度的数据进行位运算
    Linux的sleep()和usleep()的使用和区别
    linux inode已满解决方法
    Debian 系统修改语言设置成英文
    IIS设置问题
    Ajax实现跨域访问的三种方法
    HTML--备忘点
    C#基础---值类型和引用类型
    dapper.net框架使用随笔
    WebService的搭建,部署,简单应用和实体类结合使用
  • 原文地址:https://www.cnblogs.com/yaowen/p/6984224.html
Copyright © 2020-2023  润新知