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[email protected]
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"
  }
}
时间: 2024-10-03 01:30:38

vue24-webpack+vue-loader的相关文章

怎样通过已经使用过webpack+vue+vueRouter+vuecli的配置文件package.json创建一个项目

首先,我们自己得手动创建一个webpack+vue+vueRouter+vuecli工程,执行下面:如:新建一个vue项目,创建一个基于"webpack"的项目,项目名为vuedemo: $ vue init webpack vuedemo 安装完成后进入工程名称再根据原来项目的配置文件初始化 $ cd vuedemo $ npm install 但是由于在新建的时候对eslint的选择中选择了Yes,所以后面根据配置package.json的时候,发现没有eslint-friendl

nodejs+webpack+vue之webpack

webpack是一款模块加载器兼打包工具,把JS.样式,图片都作为模块来使用和处理.项目下有个配置文件webpack.config.js,用来告诉webpack需要做什么,本项目的webpack.config.js文件内容如下: 引入模块: var path = require('path') var webpack = require('webpack') 入口文件及输出文件配置: 通过entry节点可以配置入口文件,且支持多个入口文件,每个模板只会有一个入口文件. 通过oupput节点可以配

gulp+webpack+vue

gulp+webpack+vue 章节目录 1.目标 2.实现 2.1合并库文件 2.2组织业务代码 2.3打包开发代码 2.4使用webpack-dev-server和热替换插件HotModuleReplacementPlugin 2.5打包生产环境代码 3.把命令都整合到npm中 4.后续 1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命令打

Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用.其实说是多页面应用,实际上在webpack中属于四个app,  如果真是做纯单页面,那应该有二三十个页面吧.所以我这里的多页面应用,是分为四个SPA.比如微信最下面,有四个导航,微信,通讯录,发现,我. 那么这四个导航,就是我的四个SPA,配置多个入口即可. 在这里就不说太多代码了,项目结构将会放

webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)

说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项目文件名为vuedemo 2.yarn add init  初始化项目 >安装项目依赖 3.yarn add vue 安装最新版vue 4.yarn add webpack webpack-dev-server  安装webpack,webpack-dev-server(是一个小型的Node.js Ex

Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化

0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思路分享出来了,传送门在这里. 因为那份配置直到现在还有人在关注,同时最近公司帮助项目升级了 Webpack 4,趁机也把之前的配置也升级了一下,而且博客荒废了这么久,都快 9102 年了,不能连年均一篇博文都不到,所以有了下面的分享. 下面的配置主要是给在多页面下使用 Webpack 的同学在升级

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢?

如何搭建一个基于 Egg + Webpack + Vue 的服务端渲染工程项目呢? 项目你可以通过 easywebpack-cli 直接初始化即可完成或者clone egg-vue-webpack-boilerplate.下面说明一下从零如何搭建一个Egg + Webpack + Vue 的服务端渲染工程项目. 通过 egg-init 初始化 egg 项目 egg-init egg-vue-ssr // choose Simple egg app 安装 easywebpack-vue 和 egg

webpack -&gt; vue Component 从入门到放弃(二)

Foreword 上一篇简单介绍了webpack的打包功能,应该说是比较无意义的打包,对于开发人员来说,这种效率是非常低的.所以我们来点升华. First Step 我们给第一篇例子中加个样式文件我们 style.css body { background: yellow; } 然后修改 entry.js require("!style-loader!css-loader!./style.css") // 载入 style.css document.getElementById('ap

Webpack系列:在Webpack+Vue中如何将对后端的http请求转到https的后端服务器中?

在上一篇文章(Webpack系列:在Webpack+Vue开发中如何调用tomcat的后端服务器的接口?)我们介绍了如何将对于webpack-dev-server的数据请求转发到后端服务器上,这在大部分情况下就够用了. 然后现在问题又来了,在生产环境下接口一般采用https协议,如果我们要把数据请求转发到生产服务器上怎么办? 首先会想是不是把上一篇博文中提到的proxyTable改成https就可以了,如下:     proxyTable: {                '/appserve

Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?

现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echarts' 然后编译的时候加上了Uglify选项,发现vendor文件的大小已经达到了800多k,导致首次加载速度比较慢,然后我们这个是webapp,就更慢了. 所以考虑把echarts提取出来,改用cdn版本的echarts,具体操作步骤如下: (0)找到可用的echartscdn资源 在bootcdn