使用 vue-cli 脚手架工具搭建一个 vue2.0 项目

开始用 vue 框架的时候,我只会

<script src="js/vue.min.js"></script>

然而这种方式可能比较适合入门和熟悉 vue,要进行开发的话还是要使用 vue 的官方命令行工具 vue-cli。

检查 node 和 npm 版本

第一次安装 vue-cli 要检查 node 和 npm 的版本,node 要 4.0 以上npm 要 3.0 以上(node 和 npm 的安装就略过了)。

node -v
npm -v

如果不是所要求的版本需要升级,可参考:升级node.js和npm

全局安装 v-cli

npm install -g vue-cli

初始化

vue init <template-name> <project-name>

template-name 是 vue 提供的官方模板,这里我们使用的是 webpack 打包工具。可以使用 vue list 命令查看所有可用的官方模板。

vue init webpack vue-demo

然后会有一些选项:

vue 初始化选项
选项 描述
Project name 项目名称
Project description 项目描述
Author github 用户名
Vue build 构建方式(独立构建、运行时构建,默认为独立构建)
Vue-router vue 路由,其实并不建议第一次用 vue-cli 的时候使用 vue-router,因为自动生成的项目会变得有些复杂,不好分析,后面用到的时候可以再安装
ESlint js 的代码检查工具,默认为 standard 标准安装
unit tests(Karma+Mocha) 单元测试,暂时忽略
e2e tests(Nightwatch) 端到端测试,暂时忽略

然后进入文件夹,安装依赖,运行项目

cd vue-demo
npm install 安装所有依赖
npm run dev 运行

然后浏览器会自动打开 http://localhost:8080/,你就可以看到如下图所示的页面了。

到此为止,一个 vue 项目就基本搭建好了。

分析项目目录结构

接着我们来分析一下项目的目录结构:

文件目录结构
文件 描述
build 和 config webpack 配置相关文件
node_modules 通过 npm install 安装的依赖代码库
src 存放项目源码(开发的所有代码)
static 存放第三方静态资源
.babelrc babel 的一些配置,babel 的作用是将 ES6 转换成 ES5
.editorconfig 编辑器的配置(编码方式,缩进风格等等)
.eslintignore 不对这些文件做语法检查
.eslintrc eslint 的配置,在这里你可以改变默认的一些代码风格,比如句末分号等等
.gitignore 上传到 git 仓库时,忽略这些文件
.postcssrc.js 加载配置文件
index.html 项目的入口 html 文件
package.json 包管理
README.md 项目说明文件

接着我们可以分析一下与界面直接相关的文件与代码。

先看主目录下的入口 html 文件:index.html

index.html

发现只有一个 id 为 app 的 div,接着看 src 文件夹中的项目代码:

src 文件目录
  • assets 文件夹中存放的是一些静态资源文件,这里只放了一张 logo
    的图片。
  • components 文件夹存放的是组件,在 vue 中一个组件对应就是一个 .vue 文件,可以看做是 html 标签的拓展与复用,这里只有一个 hello.vue。
  • App.vue 这是整个页面的 vue 实例。
  • main.js 是项目的入口 js 文件。

先看 main.js 入口文件:

  // 使用 import from 的方式加载模块或组件
  import Vue from 'vue'
  import App from './App'
  
  // 关闭生产模式下给出的提示
  Vue.config.productionTip = false

  /* eslint-disable no-new */
  new Vue({
    el: '#app',  // 挂载到一个 id 为 app 的元素上(见index.html)
    template: '<App/>',  // 渲染组件
    // components 用来注册组件
    components: { App }  // 引入的组件
  })

可以发现,main.js 引入了主实例 App.vue,并渲染到 index.html 上。

然后再看 App.vue:

<template>
  <div id="app">
    ![](./assets/logo.png)
    <hello></hello><!-- 使用 hello 组件 -->
  </div>
</template>

<script>
// 引入了 hello 组件
import Hello from './components/Hello'

export default {
  name: 'app',
  components: {
    Hello
  }
}
</script>

<style>
  ...
</style>

我们发现在 App.vue 中引入并使用了 hello 组件,至此还没发现任何与看到的页面相关的内容,怀着终于走到终点的心情打开了最后一个文件,惊觉原来如此,所有的东西都在这啊。

总而言之,我们在页面上看到的内容(除图片外)都是在 Hello.vue 这个文件定义的,作为一个可以重复使用的组件,被引入了 App.vue 这个实例中,App.vue 这个组件可以看做整个项目的主实例,而 App 这个组件又是通过 main.js 初始化并挂载到 index.html 中渲染的,至于说为什么没有 <script> 这样显式关联的语句,就是 webpack 的功劳了。

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

推荐阅读更多精彩内容

  • 本文作者 Jinkey(微信公众号 jinkey-love,官网 https://jinkey.ai)原文链接 h...
    JinkeyAI阅读 425,141评论 152 921
  • 最开始的看阿甘正传,只是为了学英语,反复的暂停快进。并没有走心的去关注电影本身要向我们传达的思想。因为没有走心,所...
    夏越阅读 786评论 0 2
  • 距离产生美,我需要做的不是找到适合做朋友的人去交朋友,而是杜绝贱人坑自己
    晨升阅读 197评论 0 0
  • @interface UIPickerVC ()@property(nonatomic, strong)UILab...
    彬至睢阳阅读 185评论 0 0
  • 今年冬天的一天,我只身一人站在北风呼啸的街道上等人,还是上午10点的光景,我百无聊赖地左顾右盼着,两个十岁左右的小...
    沈黎安阅读 334评论 0 5