暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

vue的简单使用

程序媛的梦想 2018-09-21
782

安装vue官方命令行工具

  1. 全局安装:

1npm install -g vue-cli
  1. 查看版本

1vue --version


创建一个基于"webpack"模板的新项目

1. 在当前目录初始化一个名为my-project的项目

1vue init webpack my-project

(1) 然后自动downloading template;

(2) 然后会问你项目的名称,可以手动输入,也可以按enter直接适应上面命令行里的名称(我这里是my-project);

(3) 接着会问你项目的描述,可以按自己的想法写,也可以按enter直接忽略;

(4) 然后问你作者,可修改,也可以按enter直接用你原来已经设置的GitHub的账号;

(5) 还会问你是否用ESLint,这是一个代码检查工具;

(6) 是否使用单元测试,可以不用。

2. 解读项目的结构

初始化完成后在当前目录生成一个my-project的文件夹,如下图所示:目录解析:

目录/文件说明
build项目构建(webpack)相关代码
config配置目录,包括端口号等。我们初学可以使用默认的。
node_modulesnpm 加载的项目依赖模块
src

这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:

  • assets: 放置一些图片,如logo等。

  • components: 目录里面放了一个组件文件,可以不用。

  • App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。

  • main.js: 项目的核心文件。

static静态资源目录,如图片、字体等。
test初始测试目录,可删除
.xxxx文件这些是一些配置文件,包括语法配置,git配置等。
index.html首页入口文件,你可以添加一些 meta 信息或统计代码啥的。
package.json项目配置文件。
README.md项目的说明文档,markdown 格式

3. 启动项目

但是这时项目还不能启动,因为前端项目也是需要很多依赖的,所以我们要先在my-project目录下载依赖:

1npm install

这时候会自动下载依赖。但是这里有个问题,为什么在这个目录下能自动下载依赖呢?答案可想而知,肯定是这个目录下有相应的关于依赖信息的配置文件,这个文件就是package.json文件:

我们通过:

1vi package.json


看一下package.json文件:

我们可以看到这个文件里有项目的名称、版本、描述、作者,最关键的是还指定了它的dependencies,也就是依赖,还有开发的依赖devDependencies, devDependencies里指定的就是这套目标使用到的依赖,如file-loader是webpack读取CSS模块的一些工具,vue-loader是如何把.vue文件解析成浏览器能识别的HTML、JS的这些东西。


执行npm install下载完成后,我们看到my-project目录下多了一个node_modules文件:

这就是刚刚通过npm install下载的依赖。

然后我们就可以把这个项目跑起来了:

1npm run dev

运行完成后,通过浏览器打开http://localhost:8080(这里我的8080端口不好使,故启动了8081)

P.S. 如果你通过npm run dev启动了工程,又在终端新开窗口启动的话,它会自动改成其它端口,依次是8080、8081、8082等:

一般启动一个用来调试就行了,除非你的8080端口被占用了,你又懒得处理。 

这里又有一个问题:这个端口是在哪里设置的呢?这就是my-project下的config文件夹里的index.js文件了。如下图所示:

解释:如上图所示,文件中设置了host为localhost,端口为8080,自动打开浏览器。我们注意到文件中端口设置后面有一句解释:“// can be overwritten by process.env.PORT, if port is in use, a free one will be determined”这句话的意思就是说端口是可以被程序修改的,如果端口占用了,会自动定义一个可用的端口号。

从*.vue到页面

一个后缀为vue的文件是怎么编译生成页面的呢?
就是通过webpack打包工具可以把一个.vue文件打成.html、.js和*.CSS文件。js就是一个新的vue对象,重点的数据侧,就是Model层都在这个vue的数据对象了,展现层都在html里。

vue的热更新

假如你运行了工程,打开了页面,然后了修改了代码,你想看到修改后的效果,这时需不需要重新运行代码呢?答案是否定的,因为有vue的热更新。
如下图所示,原来代码里是Welcome to Your Vue.js APP:

(我这里用的编辑器是Visual Studio Code)

我在本地代码改成Welcome to My Vue.js APP然后保存(当然如果设置了自动保存的话就不需要操这步了)一下代码,刷新页面(甚至不需要刷新)就能看到改变了:

也就是说,你只要保存了代码,不需要重新运行,就会更新到页面上。

vue的入口文件及文件调用关系

  1. main.js是程序入口文件,然后加载各种公共组件;

解释:

 1// 这个Vue是来自由这套模板提供的,这个vue在打包的时候,会从node-modules里面取vue框架的东西。
2import Vue from 'vue'
3// 第一个App是指下面的components里的组件,第二个App是App.vue的略写,也就是说第一个App是(来自)App.vue文件。
4import App from './App'
5import router from './router'
6
7Vue.config.productionTip = false
8
9/* eslint-disable no-new */
10new Vue({
11  el'#app',
12  router,
13  // 这里注册了App组件,注册完可以当标签<app></app>在HTML中使用(大写会转成小写)。
14  components: { App },
15  template'<App/>'
16})

其实这里的import App from './App'相当于var App = required('./App'),就是将App.vue作为App(变量)引入到当前文件下。第一句加载的vue在node-module里


2.在main.js中,加载的是App.vue文件,所以App.vue是vue渲染的入口。App.vue是我们的主组件,所有页面都是在App.vue下进行切换的。其实也可以理解为所有的路由也是App.vue的组件。这里将router标识为App.vue的子组件。


3. router->index.js把准备好路由组件注册到路由里。

文件的调用顺序:main.js-->App.vue-->router下的index.js。

开始写最简单的代码!

1. 直接在App.vue里写

写完就能出现这个页面:

2. App.vue只是调用,将页面的内容写在子组件中。

解释:第二行id="lxn"表示调用名为lxn.vue的子组件。



文章转载自程序媛的梦想,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论