VUE.js学习笔记--VUE-CLI脚手架

安装vue-cli

Vue 提供了一个官方的 CLI,为单页面应用 (SPA) 快速搭建繁杂的脚手架。它为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验,以及生产环境可用的构建版本。

安装cli:
npm install -g @vue/cli
# OR
yarn global add @vue/cli
创建vue工程:
vue create my-project
# OR
vue ui

创建vue+node项目

1、首先打开cmd命令行,查看node.js和npm是否已经安装,新版的node.js默认安装npm的

查看是否有安装

对于node不了解的可以看下我之前总结的node.js入门如果对您有帮助欢迎点赞~
[NODE.JS包浆记]https://www.jianshu.com/c/bd95bc394f5b
2、使用命令全局安装vue-cli脚手架
npm install -g vue-cli
注:因为跟着学习的视频以及大多数教程都是用的旧版的vue-cli所以如果你跟我一样是前端菜鸟也是在网上自学的话差不多也是看到的这个命令,但是官网其实已经更新为vue-cli-3了,这是官网对于旧版换新颜的说明:

Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版本的 vue-cli(1.x 或 2.x),你需要先通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载它。
新的脚手架需要node.js 8.9以上的版本,因为包名换了所以安装命令应该改为
npm install -g @vue/cli

安装完成后可以用vue –version 来查看(我安装的是旧版)


3、然后就可以开始创建一个vue项目啦
在指定目录下执行创建项目命令:vue create hello-world (hello-world为项目名称)或者vue ui(图形化创建)执行后会需要选择一些配置
图片来自互联网

4、然后cd进入到项目文件夹内,执行npm install会发现项目结构里,多了一个node_modules文件夹(该文件里的内容就是之前安装的依赖)
以上步骤完成后就能在目录下找到以下工程文件夹啦,目录如下
工程目录结构

创建出来的工程目录

  • build 文件夹下放置的是一些项目的webpack配置文件
  • config 文件夹下是一些开发环境和线上环境的配置文件
  • node_modules 文件夹放置的是项目的依赖文件
  • src 放置的是源代码
  • static 文件夹放置的是静态资源
  • test 为测试用例文件夹
  • .babelrc 文件为针对babel的编译文件
  • .editorconfig,浏览器配置文件
  • .gitignore git检测工具
    这些文件都不需要修改,默认即可
  • Index.html,项目的网页入口
    在项目开发的过程中主要在src下编写代码
    然后我们执行 npm run dev命令,即可启动项目

    一顿疯狂运行后得到:
    启动成功

    此时我们便可访问http://localhost:8080得到初始页面啦:

项目源码分析

Html文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>vue_test</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

这就是入口的index文件了,可以看到有一个id为app的div我们去src看源码

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'//相当于引入./router/index,index可以省略,其他名字则不可以

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },//引入了src目录下的app.vue组件,es6写法,等同于components:{App:App},当键值相等可以只写一个
  template: '<App/>'
})

Src中的main.js文件,绑定了index里的app接入了app.vue局部组件

App.vue:
<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>//这里用的就是router的页面啦
  </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>

这是一个完全封装的vue组件,包括<template>模板,<js>代码和<css>样式
Img 引入的就是我们在网页上看到的vue的loge图标,<router-view>标签渲染引入了下面的链接,我们进入router中的index.js:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

调用了HelloWorld组件,进入到componets目录下的HelloWorld.vue组件


这里就是logo下的超链接啦

将之前的例子组件移植过来

下面我们将之前制作的组件移植过来

根目录index.html:

<div id='test'></div>

创建一个div盒子,id为test

src/main.js 中绑定test,引入components目录下的自定义test组件

import  test  from  './components/test'

new  Vue({

  el:'#test',

  components:{ test },

  template:'<test/>'

})

components目录下创建test.vue组件

<template>
<div>
    <input v-model="inputValue"/>
    <button @click="handleSubmit">提交</button>
    <ul>
        <li-test 
            v-for="(item,index) of list" 
            :key="index"
            :content='item'
            :index='index'
            @delete='handleDelete'
        ></li-test>
    </ul>
</div>
</template>

<script>
import liTest from '@/components/li-test';
export default {
    name:'test',
    data() {
        return {
            inputValue:'',
            list:[]
        }
    },
    components:{
        'li-test':liTest
    },
    methods : {
        handleSubmit (){
            this.list.push(this.inputValue);
            this.inputValue='';
        },
        handleDelete (index){
            this.list.splice(index,1);
        }
    }
}
</script>

注意:使用vue-cli脚手架管理项目的话组件中的data有所变化不再是以对象的形式存在而是以函数的形式存在,函数的返回值仍是对象区别如下:

在脚手架中data为函数的形式,其值为return的返回值对象

components目录下创建抽取出来的用来生成li的组件li-test.vue

<template>
    <li @click="handleDelete">{{content}}</li>
</template>

<script>
export default {
    name:'li-test',
    props:['content','index'],
    methods:{
        handleDelete(){
            this.$emit('delete',this.index)
        }
    }
}
</script>

可以看到除了data的语法有变其他都是一样的

当然不要忘记html模板要放在<template>标签下~
都是自己在网上看学习资料的一些心得和学习笔记,如有不对欢迎指正讨论,共同进步

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

推荐阅读更多精彩内容