单文件组件和vue-loader

解析打包.vue文件

vue为了能够使我们在项目开发中对组件进行更好的维护,提供了一个单文件组件系统,vue把每一个独立的组件放在一个.vue的文件中,在这个文件中提供基础三个自定义标签:

1. template

2. script

3. style

来放置组件不同的内容块,但是因为浏览器不能够直接去识别该文件类型,所以我们需要通过webpack来进行编译打包,官方提供了一个对 .vue 进行处理的loader:vue-loader

ERROR in ./src/Hello.vue

Module build failed: Error: Cannot find module 'vue-template-compiler'

vue实际开发使用 .vue 的单组件系统来实现,但是不能适应实际复杂的需求,我们还需要配置很多的一些东西来和 .vue 进行融合,这个配置很繁琐,所以官方提供了一个工具,帮助我们来构建一个项目开发过程中必须使用的一些内容,这个工具:vue-cli,通过这个工具我们就可以很方便的来创建一个基于vue的项目,我们也把这个工具称为---脚手架

安装

npm install vue-cli -g(全局)



yarn global add vue-cli

当我们通过上述方式安装好vue的脚手架以后,我们就可以在命令行中使用一个命令:vue(该命令是没有-cli的)

vue的使用

vue init

init:初始化(创建)基于vue的项目

vue init webpack hello:基于webpack来构建一个名称为hello的vue项目(项目构建一定要联网!联网!联网!)

vue-cli是一个交互式命令行,通过vue命令构建项目会需要我们填写一些项目的信息:

Project Name:要创建的项目名称(该命令会生产一个package.json文件,文件中的name选项就是这个ProjectName,默认为当前创建的项目目录名称,也可以自行制定(但是需要符合package.json中name命名规则,不要出现大写字母,空格,下划线,可以使用 - )

Project Description:项目简介,也会出现在package.json文件中,可选

Author:作者,可选

下一步直接回车

Install vue-router:是否安装vue路由组件,做项目的话一定要安装

Use ESLint to lint your code:是否需要使用ESLint模块进行代码检测

Setup unit tests with Karma + Mocha?:是否安装测试(单元测试)

Setup e2e tests with Nightwatch?:是否安装端到端的测试

完成上面步骤,over!

通过vue-cli完成配置以后,下一步需要安装vue所需要的依赖包,项目需要安装的依赖包在vue-cli工具自动生成的package.json文件中有说明:

dependencies:项目中实际需要使用到的依赖包

devDependencies:项目开发过程中需要使用的一些工具包,不是项目实际线上代码的一部分

运行

所需要的安装依赖包安装完成以后,就可以启动项目,运行

yarn run dev / npm run dev:开启一个测试开发环境

yarn run build : 构建项目,把项目进行打包,我们可以把项目打包后的文件上传到服务器

如果是首次运行,那么会看到一个欢迎页面,下面我们就可以进行项目开发

项目结构

  • build目录:构建项目命令所需要使用到的一些脚本文件和配置文件

  • config目录:在vue-cli中会自动安装一个小型的express搭建的热重载web服务器,config里面就是关于这个服务器的相关配置

  • dist目录:项目编译构建上线后的存放目录

  • node_modules目录:项目依赖包存放目录

  • src目录:项目源代码存放目录

  • static目录:静态资源存放目录

在项目开发过程中,我们的大部分任务是在src这个目录下完成的

  • main.js:vue脚手架为我们自动生成的项目中设置的入口文件,在该入口文件中,做了一些项目初始化的工作

    • 引入 Vue
    • 引入必要的组件
    • 创建Vue实例

路由

当我们的应用变得复杂了以后,涉及到的页面也会变多,逻辑也会变复杂,原来我们是通过多页面的方式来组织和维护我们的网站,但是这样的用户体验不是太好(因为会刷新或跳转页面),为了解决用户体验问题,最好的方式,数据(页面会发生变化),但是不需要跳转、刷新。

  • 通过ajax异步无刷新获取数据
  • 获取到数据以后通过vue来处理和管理还有渲染页面

什么情况下获取数据渲染页面?传统的处理方式:通过url重新发送请求得到新的数据和页面,获取什么页面数据由url来决定,使用了单页面开发模式的话,就不能再使用页面跳转,但是可以使用url中的hash值的变化来决定获取什么内容渲染什么页面。

所以一个url的hash对应一个视图,那么我们就需要设置hash和视图的关系,我们可以把hash和view做一个对应关系(映射)

- 设置hash-view的map(映射)关系

- 监听hash变化

- 当hash值变化的时候,根据map找到对应的组件来渲染视图

vue为我们提供了一个第三方的框架来实现上述的功能:vue-router

上面我们提到的 地址-视图 的映射:路由

vue-router

https://router.vuejs.org

安装

npm install vue-router / yarn add vue-router

如何用vue-cli初始化一个vue项目的更多相关文章

  1. Vue Create 创建一个新项目 命令行创建和视图创建

    Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...

  2. Vue Cli 3:创建项目

    一 简介 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,有几个独立的部分. 1 CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.(vue ...

  3. [转]Vue CLI 3搭建vue+vuex 最全分析

    原文地址:https://my.oschina.net/wangnian/blog/2051369 一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@ ...

  4. Vue CLI 3搭建vue+vuex 最全分析

    一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...

  5. Vue Cli 3:vue.config.js配置文件

    Vue Cli 3生成的项目结构,没有build.config目录,而是使用vue.config.js来进行配置. vue.config.js 是一个可选的配置文件,如果项目的 (和 package. ...

  6. 前端框架之Vue(1)-第一个Vue实例

    vue官方文档 知识储备 es6语法补充 let 使用 var 声明的变量的作用域是全局. { var a = 1; } console.info(a); 例1: var arr = []; for ...

  7. 初始化一个vue项目

    1.安装node 端开发框架和环境都是需要 Node.js ,先安装node.js开发环境,vue的运行是要依赖于node的npm的管理工具来实现,下载https://nodejs.org/en/,安 ...

  8. webpack 4.x 从零开始初始化一个vue项目

    创建目录 项目名称: vue-init app css reset.sass js home index.vue router index.js main.js App.vue views index ...

  9. 使用vue/cli 创建一个简单的项目

    首先,电脑安装了node.js官方要求8.9 或更高版本 (推荐 8.11.0+) npm install -g @vue/cli # OR yarn global add @vue/cli 全局安装 ...

随机推荐

  1. jQuery中获取文档的高度、可视区域高度以及滚动条距页面顶部的高度

    在写页面的时候,经常会碰到这样的情况,就是要获取文档的高度.可视区域高度或者滚动条距页面顶部的高度等情况. 但我总是有些爱搞混淆了,这里还是简单做个笔记吧,这里只限于使用jQuery来获取. 1.获取 ...

  2. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  3. MongDB .Net工具库MongoRepository的简单使用

    MongDB .Net工具库MongoRepository的简单使用 最近研究了一下MongoDB数据库,并使用了开源的在.net环境下的一个类库,Mongo仓库.对于数据的一些简单的操作非常好用,特 ...

  4. 智能家居esp8266对接机智云

    依然存在稳定性问题 机智云官网--机智云 一个比较详细的教程--esp8266 一开始采用的是esp12f   可是他太不稳定,总是掉线,机智云的固件我也是刷了无数遍,哎太难了. 我比较懒,走过了太多 ...

  5. redis 安装实战(10步完成安装)

    1 下载zip :https://redis.io/download   ---->redis-4.0.6 2 上传:利用wcp 上传到/usr/local/soft/ 3 解压:tar -zv ...

  6. 谈Ajax的Get和Post的区别

    Get方式:   用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行 ...

  7. _3_body_标签

    创:20_3_2017修:5_4_2017 什么是div标签? div 双 -- div标签没有任何默认属性 -可以任意写入样式和内容,和 水一样,水自然平凡而又最多 什么是h1标签? h1 标题(双 ...

  8. JavaScript之点赞特效

    在很多网站中登录后可以对你说喜欢的文章.图片之类的进行点赞,这个功能效果的实现就是我今天要写的东西.代码不长,但觉得还是很有用的,为 js 给用户交互体验上更加友好.在实现过程中,主要的思路有: 点赞 ...

  9. MYSQL导入大量数据碰到的问题及解决方法

    在项目中,经常会碰到往数据库中导入大量数据,以便利用sql进行数据分析.在导入数据的过程中会碰到一些需要解决的问题,这里结合导入一个大约4G的txt数据的实践,把碰到的问题以及解决方法展现出来,一方面 ...

  10. AWS认证权威考经(助理级认证篇)

    笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...