vue-从vue-cli一步步启航

1 篇文章 0 订阅
1 篇文章 0 订阅

目录

前言

需要稍微知道的东东

node.js

npm

webpack

开始撸vue

热身

文件结构

main.js

app.vue

rotuer

components

加入自己的组件

编写自己的组件

增加路由节点

在app.vue加入链接

最终效果

后记


前言

之前web前端库一直使用的Extjs,也是通过Extjs,对javascript有了比较深入的了解。虽然现在很少做开发了,但是Extjs确实很优秀,最近又开始手痒,想做点什么,同时想找一个新的前端框架。

2018年底的时候,了解到Vue,通过菜鸟教程的在线测试尝试了下,感觉非常犀利。随后用它来做了一个刷卡考勤的小应用,对其数据、逻辑及界面的分离强大机制有了进一步的体会,一个字,牛。遂想进一步深入学习,能够熟练掌握致可用于项目开发的程度。但是稍微一搜索,发现前端技术的变化真的太大了,发现自己已经脱离主流了。javascript的玩法已经有了太多的发展,之前一个记事本打天下的时代正在远去,javascript居然也可以预编译了,好吧,就从vue开始再次回归程序猿。

(题外:2018年底,开始从MyEclipse转入IDEA,开始通过gitee同步代码,开始了解到javascript可以预编译...,真的脱离技术圈太久了)

需要稍微知道的东东

       刚开始接触vue的时候,被一堆名词弄得神魂颠倒,几乎准备放弃,不过vue真的太优秀了,让我欲罢不能,遂开始一个个攻坚,对node.js,npm,webpack,脚手架等有了初步的了解,相关概念整理如下,跟我一样的童鞋可以看看。

node.js

其官网定义是:Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

百度解释为:Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言。发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

所以,node.js不是一个javascript框架或是某种语法,而是一个javascript的运行平台,类似java虚拟机,通过node.js,可以让javascript脱离浏览器就可以运行,甚至运行在服务端。

想深入学习可移步菜鸟教程的node.js章节。必须指出,菜鸟教程对于node.js的解释--简单的说 Node.js 就是运行在服务端的 JavaScript--有误。

node.js其实跟vue关系不大,所以如果只是想使用vue,安装node.js,有这个环境就ok了。至少现阶段还没有发现vue对node.js存在任何依赖。至于为什么需要node.js,我想只是要使用其对ES6的支持,支持vue的模块化和单文件。想进一步了解,推荐看彻底搞清楚javascript中的require、import和export》,这篇文章对javascript的发展有一个比较全面的介绍。

npm

目前网上很多vue的学习资料,上手就要使用npm,虽然vue的官方文档建议不要一开始使用vue-cli,但是vue真的太容易入手了,你马上就越过了“开始”这个阶段,于是npm是绕不过的坑。

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package;即,代码模块)(--npm 中文文档

NPM是随同NodeJS一起安装的包管理工具,安装node.js后,在命令输入

npm -v

如果能够正确显示版本号,就是安装成功了

同样的,学习vue的现阶段,没必要对npm过多的关注,按照教程敲命令就好,深入的配置可以留到以后。

webpack

webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。(webpack的中文网站。)

刚接触,我对这个东东也不了解,先写这里,以后有更多的了解再说。

开始撸vue

vue有所谓的全家桶,这是个大目标,先是实现下小目标吧:

                                                撸个自己vue单文件程序,并且把各文件的关系弄清楚。

热身

关于模板语法,条件什么的,看vue的官方网站或者类似菜鸟教程vue专栏在线尝试,实践几次就很好理解了。

但是作为记事本年代过来的javascript写手,我头痛的是所谓的脚手架,不过网上也有一步一步的超详细教程,譬如《vue-cli(vue脚手架)超详细教程》,按教程撸一遍,node.js,npm(注意:慢的话,使用淘宝镜像),什么的都有了,然后还有一个可以运行vue的demo

淘宝镜像注册:

npm install -g cnpm --registry=https://registry.npm.taobao.org

ok,如果你按照上面的教程,认真走了一遍,那么应该已经有一个可以运行的vue程序了,像下面这样:

我们的实践,就从这里开始,通过解刨这个自动创建的程序,知道如何加入自己的模块,从而踏上入坑之旅。

文件结构

要想加入自己的模块,就先要了解基于脚手架的vue的文件结构不是。vue-cli创建项目后,项目文件下会有一大堆文件(这些文件的说明,可以看上节推荐的超详细教程),但是跟我们直接相关的,现阶段只有一个,就是“src

进入src,我们看到的目录结构是这样的:

  • assets文件夹用来存放资源,譬如图片什么的。
  • components是核心,用来存放模块文件,就是.vue文件,我们的主要代码应该在这里
  • router实例化了一个vue-route,定义了路由节点,之后解刨
  • App.vue是一个首页的模块,会替换index.html中的<div id="app">这这个节点。
  • main.js,是整个系统的入口文件。

既然main.js是入口,我们就从这个文件开始入手

main.js

import Vue from 'vue'
import App from './App'       //引入了app.vue,并且取名字为App
import router from './router' //引入路由

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,                     //注入路由
  components: { App },        //注册组件App,就是在上面引入app.vue时取得名字
  template: '<App/>'
})

这文件,是整个程序的入口。首先实例化vue对象,并且传入了:路由、app组件,指定了渲染模板。

app.vue

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>                  <!--路由输出口-->
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

这是一个标准的组件文件,包括:template、script、style三个部分。

这个组件最关键的地方就是定义了<router-view/>节点,所以当我们还不了解路由的时候,会觉得helloworld怎么出现会莫名奇妙,下面在路由里面我们结合一起讲。

rotuer

router文件夹下面,包含一个index.js文件,其代码如下:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'    //引入helloword组件

Vue.use(Router)

export default new Router({
  routes: [
    { //根结点,将默认渲染在app.vue定义的 <rotuer-view/>路由输出位置
      path: '/',      //根路径
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

这个文件的功能包括:引入路由;引入组件,创建路由节点。

一个路由节点,相当于一个页面,在 path参数指定其路径,然后就可以在<router-link to="path">来访问。具体怎么做,我们在后面的实战中接着说。

请注意:这个helloworld节点,其path是'/',是一个根路由节点,也就是是什么在app.vue没有显示引入hellworld的时候,该组件会显示出来,因为加入路由后,其默认显示的原因。

components

这个是组件目录,目前里面只有一个helloworld组件。在这个demo中,helloworld组件是首页。下面有具体的自建组件环节,就不对helloworld组件进行剖析。

下面开始动真格的了。

加入自己的组件

现在的程序中,有两个组件app.vue和helloworld.vue,并且通过路由将helloworld显示在app组件里面,在传统html结构下,其结构如下:

我们可以认为app.vue是一个html页面,里面有一个<iframe>(这里是<router-view>),嵌入了helloworld.html页面。我们的改动就是形成下面的结构:

即在app组件加入两个路由链接“P1",”P2",点击链接,可以导航到不同的页面组件。

需要的操作包括:添加一个MyPage的组件,编写路由节点,在App中增加路由链接,在路由中定义路由节点。

编写自己的组件

我们在components的文件夹下,增加一个Mypage.vue文件。输入代码如下:

<template>
  <div class="hello">
    <h1>这是自创的牛x组件</h1>
  </div>
</template>

<script>

export default {
  name: 'Mypage',
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  h1, h2 {
    font-weight: normal;
  }
  ul {
    list-style-type: none;
    padding: 0;
  }
  li {
    display: inline-block;
    margin: 0 10px;
  }
  a {
    color: #42b983;
  }
</style>

这个组件目前就是显示一段吹牛的文字,啥也没有,所以进一步的:再引入一个组件:

继续在components文件夹下创建MyInput.vue文件:

<template>
  <div >
    请输入你的大名吧:
    <input type="text" /><br>
    <h2>{{msg}}</h2>
  </div>
</template>

<script>
export default {
  name: 'Myinput',
  data () {
    return {
      msg: '你已经成为大牛一样的人物啦!'
    }
  }
}
</script>

并且在Mypage文件中,引入并注册myinput组件

import myinput from './MyInput.vue'


components:{
  myinput
}

修改后的mypage.vue代码如下:

<template>
  <div class="hello">
    <h1>这是自创的牛x组件</h1>
    <myinput/>        <!--自定义组件渲染在这里-->
  </div>
</template>

<script>
import myinput from './MyInput.vue'        //引入自定义组件

export default {
  name: 'Mypage',
  components:{                             //注册自定义组件
    myinput
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  h1, h2 {
    font-weight: normal;
  }
  ul {
    list-style-type: none;
    padding: 0;
  }
  li {
    display: inline-block;
    margin: 0 10px;
  }
  a {
    color: #42b983;
  }
</style>

现在组件已经创建好了,下面就是把显示到页面上去。

增加路由节点

打开router目录下的index.js文件,引入mypage组件,并设置节点参数

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'    //引入helloword组件
import Mypage from '@/components/Mypage'            //引入Mypage组件

Vue.use(Router)

export default new Router({
  routes: [
    { //根结点,将默认渲染在app.vue定义的 <rotuer-view/>路由输出位置
      path: '/',      //根路径
      name: 'HelloWorld',
      component: HelloWorld
    }, { //mypage节点
      path: '/mypage',      //路径
      name: 'Mypage',
      component: Mypage
    }
  ]
})

这里,我们将mypage的路径设置为"/mypage",记住了。

在app.vue加入链接

<template>
  <div id="app">
    <img src="./assets/logo.png"><br>
    <router-link style="font-size:25px" to="/">p1</router-link>
    <router-link style="font-size:25px" to="/mypage">p2</router-link>
    <router-view/>                  <!--路由输出口-->
  </div>
</template>

在app.vue的模板中,加入<router-link>节点,并且to分别指向"/"和"/myage",就是在router/index.js中定义的path,一切完成后,见证下奇迹。

最终效果

界面进入,显示"/"节点,点击"p2",导航到mypage节点:

后记

本项目使用的是idea编辑环境。创建一个项目,然后再idea的终端,使用npm命令即可。

下次准备把组件之间的参数传递关系搞下,搞完了再整理成文。

刚学vue,第一次写vue的文档,不妥之处请指正。学习过程中,参考了大量牛人的资料,在此谢谢了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vue-cli2和vue-cli3有一些重要的区别: 1.配置文件: vue-cli2使用的是`config/index.js`文件来配置项目,而vue-cli3使用的是`.env`和`.env.xxx`文件来配置项目. 2.构建工具: vue-cli2使用的是webpack1,而vue-cli3使用的是webpack4. 3.项目结构: vue-cli2项目结构比较简单,而vue-cli3提供了更加灵活的项目结构. 4.插件系统: vue-cli2使用的是全局插件,而vue-cli3使用的是局部插件. 5.使用方式: vue-cli2是全局安装,而vue-cli3是局部安装. ### 回答2: Vue-cli是一个vue.js的官方脚手架工具,它可以帮助我们更快地搭建一个基于Vue的项目。Vue-cli2和Vue-cli3是Vue-cli的不同版本,在一些方面存在一些显著的差异。 1. 项目结构: Vue-cli2生成的项目结构中,代码和配置信息都放在同一个文件夹中,每一个功能模块都需要手动创建;而Vue-cli3采用了新的配置方案,将项目的配置信息单独抽离出来,并且在工具创建项目时自动生成了更完整的项目结构,使项目结构更加清晰和易于管理。 2. 配置方式: Vue-cli2是通过修改webpack.config.js文件来进行项目配置的,而Vue-cli3则是通过创建vue.config.js文件来进行项目配置的。在Vue-cli3中,我们可以直接在vue.config.js中添加一些特定的配置,而无需修改webpack.config.js文件。这样做更加方便,也更加容易管理项目的开发和部署。 3. 优化: 在Vue-cli3中,作者对项目进行了一些自动优化的处理,例如:自动抽取第三方库等,以优化打包和运行速度。而Vue-cli2则需要手动配置优化选项。 总之,Vue-cli3相比Vue-cli2在工程化方面有了更多的改进和优化,我们将会更加方便、快捷地构建一个基于Vue的项目。 ### 回答3: Vue是一个流行的JavaScript框架,它允许开发人员构建动态Web应用程序。而Vue CLI是Vue的脚手架工具,用于快速构建Vue项目。Vue CLI 2和Vue CLI 3是Vue CLI的不同版本,下面将介绍它们之间的不同: 1.项目结构:Vue CLI 2生成的项目结构是采用传统的单一的Webpack配置文件,而Vue CLI 3则是基于插件的灵活的配置,将Webpack配置拆分为多个小的配置文件。 2.依赖:Vue CLI 2使用的是Vue Router 2,而Vue CLI 3升级到了Vue Router 3,同时也使用了全新的Vuex。 3.插件化: Vue CLI 3采用了插件化的概念,每个插件都可以为开发者提供定制的Webpack配置和功能增强。 4.内置功能:Vue CLI 3集成了一些内置功能如:PWA支持、自动生成样式和文档等。 5.提高性能:Vue CLI 3对webpack的配置进行了深度优化,提供了更优秀的性能表现,同时还加入了预编译,tree shaking 外置化了 `webpack`,对项目编译速度支持了更大的提升。 总的来说,Vue CLI 3采用了更先进的技术、更简单的配置结构、更多的内置功能和更好的性能。如果你计划开始一个新的Vue项目,强烈建议使用Vue CLI 3,以提高代码的开发效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值