资讯专栏INFORMATION COLUMN

微豆 - Vue 2.0 实现豆瓣 Web App 教程

cjie / 1333人阅读

摘要:微豆一个使用与重构豆瓣的项目。在中的配置代理重新启动,打开查看结果是否与直接请求豆瓣相同。更多请参考豆瓣电影文档。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

微豆 Vdo

一个使用 Vue.js 与 Material Design 重构 豆瓣 的项目。

项目网站 http://vdo.ralfz.com/

GitHub https://github.com/RalfZhang/Vdo

快速使用
# 克隆项目到本地
git clone https://github.com/RalfZhang/Vdo.git

# 安装依赖
npm install

# 在 localhost:8080 启动项目
npm run dev
教程 安装 vue-cli 脚手架

运行如下命令,即可创建一个名为 my-project 的 vue 项目,并且通过本地 8080 端口启动服务

npm install -g vue-cli
vue init webpack my-project
cd my-project
npm install
npm run dev

在运行 vue init webpack my-project 后,会依次要求输入以下配置内容

项目名称

项目描述

作者

选择 Vue 构建:运行+编译 或 仅运行时

是否安装 vue-loader

是否使用 ESLint

如果是,请选择模式:标准模式、AirBNB 模式、自定义

是否使用 Karma + Mocha 的单元测试

是否使用 Nightwatch e2e 测试

安装完成后,即可看到以下文件结构:

.
|-- build                            // 项目构建相关代码
|   |-- build.js                     // 生产环境构建代码
|   |-- check-version.js             // 检查 node、npm 等版本
|   |-- dev-client.js                // 热重载相关
|   |-- dev-server.js                // 构建本地服务器
|   |-- utils.js                     // 构建工具相关
|   |-- webpack.base.conf.js         // webpack 基础配置(出入口和 loader)
|   |-- webpack.dev.conf.js          // webpack 开发环境配置
|   |-- webpack.prod.conf.js         // webpack 生产环境配置
|-- config                           // 项目开发环境配置
|   |-- dev.env.js                   // 开发环境变量
|   |-- index.js                     // 项目一些配置变量(开发环境接口转发将在此配置)
|   |-- prod.env.js                  // 生产环境变量
|   |-- test.env.js                  // 测试环境变量
|-- src                              // 源码目录
|   |-- components                   // vue 公共组件
|   |-- store                        // vuex 的状态管理
|   |-- App.vue                      // 页面入口文件
|   |-- main.js                      // 程序入口文件,加载各种公共组件
|-- static                           // 静态文件,比如一些图片,json数据等
|-- test                             // 自动化测试相关文件
|-- .babelrc                         // ES6语法编译配置
|-- .editorconfig                    // 定义代码格式
|-- .eslintignore                    // ESLint 检查忽略的文件
|-- .eslistrc.js                     // ESLint 文件,如需更改规则则在此文件添加
|-- .gitignore                       // git 上传需要忽略的文件
|-- README.md                        // 项目说明
|-- index.html                       // 入口页面
|-- package.json                     // 项目基本信息
.
ESLint 配置

ESLint 配置在根目录的 .eslintrc.js 里。
正常情况下,ESLint 报错是因为你的代码不符合现有的 ESLint 规范。
如果你的情况实在不想被 ESLint 报错,我举出两个解决方案,来处理 ESLint 报错问题。

注:本例使用 AirBNB ESLint 规则。
例:通过 npm run dev 启动服务,打开 ./src/main.js,添加一句 console.log("abc"),结果如下:

import Vue from "vue";
import App from "./App";
import store from "./vuex/store";
/* import router from "./router";*/

// 添加此句
console.log("abc")

/* eslint-disable no-new */
new Vue({
  el: "#app",
  /* router,*/
  template: "",
  components: { App },
  store,
});

注:为做演示,句末未添加分号。

保存 main.js 文件后,页面与终端均提示如下错误:

 ERROR  Failed to compile with 1 errors 
 error  in ./src/main.js
  ⚠  http://eslint.org/docs/rules/no-console  Unexpected console statement
  C:UsersRalfDocumentscode
alfzvue	estvue02srcmain.js:8:1
  console.log("abc")
   ^
  ✘  http://eslint.org/docs/rules/semi        Missing semicolon
  C:UsersRalfDocumentscode
alfzvue	estvue02srcmain.js:8:19
  console.log("abc")
                     ^
✘ 2 problems (1 error, 1 warning)
Errors:
  1  http://eslint.org/docs/rules/semi
Warnings:
  1  http://eslint.org/docs/rules/no-console
 @ multi ./build/dev-client ./src/main.js

以上输出表明出现两个问题:

警告:不允许 console 语句。

错误:句末未加分号。

解决问题 1

.eslintrc.js 文件中的 rules 键名下添加"no-console": "off",,即关闭 console 警告。

解决问题 2

你可以选择继续在 .eslintrc.js 文件中添加关闭句末分号判定的规则。

或者,也可以把 package.json 文件中的 script 下的 lint 命令改为
"lint": "eslint --fix *.js *.vue src/* test/unit/specs/* test/e2e/specs/*"

即自动修复。值得注意的是,自动修复不能解决所有问题,有时也不甚完美,可以多试几次体会下 fix 的效果。

做完更改后,重新运行 npm run dev 即可看到无问题报告,并且 console 语句后已经自动加上了分号。

静态页面开发

此时,浏览器应该已经打开了 localhost:8080 页面。

在此情况下,请尝试更改 /src/App.vue/src/components/Hello.vue 文件中