从零构建 vue2 + vue-router + vuex 开发环境到入门,实现基本的登录退出功能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
1340641314
V2EX    分享创造

从零构建 vue2 + vue-router + vuex 开发环境到入门,实现基本的登录退出功能

  •  1
     
  •   1340641314
    lzxb 2016 年 10 月 31 日 20422 次点击
    这是一个创建于 3358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    vue2 正式版已经发布将近一个月了, 国庆过后就用在了公司的两个正式项目上, 还有一个项目下个月也会采用 vue2 进行重构 选择它没什么理由,如果非要说一个理由 那就是它的中文文档远比 react , angularjs 要友好 

    github:https://github.com/lzxb/vue2-demo

    源码说明

    项目目录说明

    . |-- config // 项目开发环境配置 | |-- index.js // 项目打包部署配置 |-- src // 源码目录 | |-- components // 公共组件 | |-- header.vue // 页面头部公共组件 | |-- index.js // 加载各种公共组件 | |-- config // 路由配置和程序的基本信息配置 | |-- routes.js // 配置页面路由 | |-- css // 各种 css 文件 | |-- common.css // 全局通用 css 文件 | |-- iconfont // 各种字体图标 | |-- images // 公共图片 | |-- less // 各种 less 文件 | |-- common.less // 全局通用 less 文件 | |-- pages // 页面组件 | |-- home // 个人中心 | |-- index // 网站首页 | |-- login // 登录 | |-- signout // 退出 | |-- store // vuex 的状态管理 | |-- index.js // 加载各种 store 模块 | |-- user.js // 用户 store | |-- template // 各种 html 文件 | |-- index.html // 程序入口 html 文件 | |-- util // 公共的 js 方法, vue 的 mixin 混合 | |-- app.vue // 页面入口文件 | |-- main.js // 程序入口文件,加载各种公共组件 |-- .babelrc // ES6 语法编译配置 |-- gulpfile.js // 启动,打包,部署,自动化构建 |-- webpack.config.js // 程序打包配置 |-- server.js // 代理服务器配置 |-- README.md // 项目说明 |-- package.json // 配置项目相关信息,通过执行 npm init 命令创建 . 

    开发环境依赖模块说明

    webpack 相关模块

    webpack // 用来构建打包程序 webpack-dev-server // 开发环境下,设置代理服务器 html-webpack-plugin // html 文件编译 url-loader // 图片 转化成 base64 格式 file-loader // 字体 将字体文件打包 css-loader // css 生成 less // css 预处理器 less less-loader // css 预处理器 less 的 webpack 插件 style-loader // css 插入到 style 标签 autoprefixer-loader // css 浏览器兼容性问题处理 babel-core // ES6 代码转换器 babel-loader // ES6 代码转换器, webpack 插件 babel-plugin-transform-object-assign // ES6 Object.assign 方法做兼容处理 babel-preset-es2015 // ES6 代码编译成现在浏览器支持的 ES5 babel-preset-stage-0 // ES6 ES7 要使用的语法阶段 vue-loader // vue 组件编译 babel-helper-vue-jsx-merge-props // vue jsx 语法编译 babel-plugin-syntax-jsx // vue jsx 语法编译 babel-plugin-transform-vue-jsx // vue jsx 语法编译 

    gulp 相关模块

    gulp // 用来构建自动化工作流 gulp-sftp // 将代码自动部署到服务器上 del // 代码部署成功后,删除本地编译的代码 

    其他模块

    cross-env // 解决跨平台设置 NODE_ENV 的问题 

    生产模块依赖说明

    vue 全家桶

    vue // 构建用户界面的 vue-router // 路由 vuex // 组件状态管理 

    页面说明

    /login // 登录,不需要登录可以访问 /signout // 退出登录,需要登录后才可以访问 /home // 个人中心,需要登录后才可以访问 / // 首页,不需要登录可以访问 * // 强制跳转到登录页面 

    运行程序

    npm install npm run dev http://localhost:3000/app/ 

    开发教程

    1.安装开发环境

    vs code https://code.visualstudio.com

    开发时所用的编辑器,内置了终端,开发时使它执行命令运行程序 

    Node.js https://nodejs.org

    JS 服务器端的运行环境,内置 npm 包管理器,管理项目依赖的各种模块,编译代码,自动部署到服务器就全靠他了 

    2.安装全局模块

    webpack

    npm install -g webpack 

    webpack 是一款模块加载器兼打包工具,它能把各种资源,例如 JS (含 JSX )、 coffee 、样式(含 less/sass )、图片等都作为模块来使用和处理

    gulp

    npm install -g gulp 

    gulp 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务

    3.创建项目

    创建项目目录,并且在项目目录下执行命令,初始化 package.json 文件 npm init 

    4.安装开发环境依赖模块 npm install --save-dev 模块名

    npm install --save-dev webpack webpack-dev-server html-webpack-plugin url-loader file-loader css-loader less less-loader style-loader autoprefixer-loader babel-core babel-loader babel-plugin-transform-object-assign babel-preset-es2015 babel-preset-stage-0 vue-loader babel-helper-vue-jsx-merge-props babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx gulp gulp-sftp del cross-env 

    5.安装生产环境依赖模块 npm install --save 模块名

    npm install --save vue vue-router vuex 

    5.搭建开发环境

    6.测试编译

    src/template/index.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue2-demo</title> </head> <body> </body> </html> 

    src/main.js

    alert('test') 
    1.运行程序执行命令: npm run dev 2.然后打开网址: http://localhost:3000/app/ 3.如果浏览器弹出 test ,说明我们的开发环境已经搭建通过。 

    package.json 自定义命令说明

    npm run dev 开发环境 npm run dev:test 将代码打包到测试服务器 npm run dev:dist 将代码打包到正式服务器 
    17 条回复    2018-03-12 09:50:53 +08:00
    pengbo37877
        1
    pengbo37877  
       2016 年 10 月 31 日
    bugsnail
        2
    bugsnail  
       2016 年 10 月 31 日
    正想整理一下这个基础,学习一下 vuejs ,已 fork
    1340641314
        3
    1340641314  
    OP
       2016 年 10 月 31 日
    @bugsnail 谢谢支持
    vire
        4
    vire  
       2016 年 10 月 31 日
    非常棒
    v1024
        5
    v1024  
       2016 年 10 月 31 日 via iPhone
    不错,正缺大型项目的模版来参考。 a
    lulin
        6
    lulin  
       2016 年 10 月 31 日
    狼主也混迹 V2EX = =
    Trim21
        7
    Trim21  
       2016 年 10 月 31 日
    已 star
    1340641314
        8
    1340641314  
    OP
       2016 年 10 月 31 日
    @lulin 感觉这边的气氛比较好
    wsph123
        9
    wsph123  
       2016 年 10 月 31 日
    star star!
    aksoft
        10
    aksoft  
       2016 年 11 月 1 日
    非常 good 啊。中间遇到的坑最好也加上。。
    mclxly
        11
    mclxly  
       2016 年 11 月 1 日
    感谢分享~
    1340641314
        12
    1340641314  
    OP
       2016 年 11 月 1 日
    @mclxly
    shawshi
        13
    shawshi  
       2016 年 11 月 1 日
    mark 谢谢分享
    lwbjing
        14
    lwbjing  
       2016 年 11 月 1 日
    vue2 我上个月上线了个项目,已经快一个月了。。 orz
    1340641314
        15
    1340641314  
    OP
       2016 年 11 月 1 日
    @lwbjing 666 ,表示现在加班中
    osacar
        16
    osacar  
       2017 年 6 月 18 日
    非常感谢!正需要这个教程实践。
    geek123
        17
    geek123  
       2018 年 3 月 12 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2618 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:18 PVG 12:18 LAX 20:18 JFK 23:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86