vue.js 2.0开发(4)

使用vue-cli,首先安装:

npm install -g vue-cli

安装完了执行vue命令,会出现

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

project-name就是我们项目目录的名字,vue init webpack my-project,这里的webpack就是我们的构建工具,下面我们运行:

vue init webpack vuejs-2.0-cli

下面就是一些  项目名 啊 项目描述啊  作者啊 巴拉巴拉的

然后就弹出一个选项  让你选择,这里我们选择第一个Runtime+Compiler模式

接下来询问是否使用ESLint语法,我们这里不使用,因为ESLint语法要求比较严谨,初学者可能会出现很多莫名的问题,询问使用unit test我们都选择no

进入到我们的项目当中cd vuejs-2.0-cli,执行上面提示的步骤

cd vuejs-2.0-cli
     npm install
     npm run dev

在下载过程中如果出现报错的话建议升级我们的nodejs,执行我们的npm run dev 后会直接打开这个页面。在编辑器中打开我们的项目的话应该就可以看到

打开里面的vue文件你就可以看到其实就是类似我们webpack和vue的组件写法,那么我们把之前的todos组件放到这里来,可以先在components中新建一个todo-items.vue

<template>
    <ul class="list-group">
      <li class="list-group-item" v-for="(todo,index) in todos" v-bind:class="{‘completed‘ : todo.completed}">
        {{todo.title}}
        <button class="btn btn-warning btn-xs pull-right" v-on:click="deleteTodo(index)">Delete</button>
        <button class="btn btn-xs pull-right margin-right-10" v-on:click="toggleCompletion(todo)" v-bind:class="[todo.completed ? ‘btn-success‘ : ‘btn-danger‘]">{{todo.completed ? ‘completed‘ : ‘working‘}}</button>
      </li>
    </ul>
</template>

<script>
export default {
  props:[‘todos‘],
  data(){
    return {
      newTodo:{id:null,title:"",completed:false}
    }//定义一个obj;
  },
  props:[‘todos‘],
  methods:{
    deleteTodo(index){
      this.todos.splice(index,1);//删除下标为index的元素
    },
    toggleCompletion(todo){
      todo.completed = !todo.completed;
    }
  }
}
</script>

<style>
  .completed{
    color: green;
    font-style: italic;
  }
  .margin-right-10{
    margin-right: 10px;
  }
</style>

其实就是我们之前的代码,只是把html放到了template里面,之前是放到script里面,在创建一个todo-form.vue

<template>
    <form v-on:submit.prevent="addTodo(newTodo)">
      <div class="form-group">
        <input type="text" name="" class="form-gcontrol" placeholder="add a new todo" v-model="newTodo.title">
      </div>
      <div class="from-group">
        <button class="btn btn-success" type="submit">add todo</button>
      </div>
    </form>
</template>

<script>
export default {
    props:[‘todos‘],
    data(){
      return {
        newTodo:{id:null,title:"",completed:false}
      }//定义一个obj;
    },
    methods:{
      addTodo(newTodo){//es6
        this.todos.push(newTodo);//把新的obj添加在数组中,
        this.newTodo = {  id:null,title:"",completed:false}//初始化newTodo
      },
    }
}
</script>

<style>

</style>

然后在我们的App.vue中引用:

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <!-- <hello></hello> -->
    <todo-item :todos="todos"></todo-item>
    <todo-form :todos="todos"></todo-form>
  </div>
</template>

<script>
import Hello from ‘./components/Hello‘
import todoForm from ‘./components/todo-form‘
import todoItem from ‘./components/Todo-items‘

export default {
  name: ‘app‘,
  data(){
    return{
        message:‘this is todos‘,
        todos:[
          {id:1,title:"learn vuejs",completed:false},
        ],
    }
  },
  computed:{
    todoCount(){
      return this.todos.length;
    }
  },
  components: {
    Hello,todoForm,todoItem
  }
}
</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>

这里我们要注意的几个地方就是:

1.我们的两个vue组件虽然一个叫todo-items一个叫todo-form,但是我们在定义我们的标签名的时候一定要用驼峰命名

import todoForm from ‘./components/todo-form‘
import todoItem from ‘./components/Todo-items‘

components: {
    Hello,todoForm,todoItem
  }

但是在template中引用的时候却用

<todo-item :todos="todos"></todo-item>
<todo-form :todos="todos"></todo-form>

或者

<todoItem :todos="todos"></todoItem>
<todoForm :todos="todos"></todoForm>

都是可以的但是todo-item更标准一些,还有就是要记得声明:todos="todos",样式的话可以在index.html中引入

<link rel="stylesheet" type="text/css" href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">

还以在模板中只能有一个根元素,像这样就是不行的

<template>

   <h1>{{message}} ({{todos.length}})</h1>
    <ul class="list-group">
      <li class="list-group-item" v-for="(todo,index) in todos" v-bind:class="{‘completed‘ : todo.completed}">
        {{todo.title}}
        <button class="btn btn-warning btn-xs pull-right" v-on:click="deleteTodo(index)">Delete</button>
        <button class="btn btn-xs pull-right margin-right-10" v-on:click="toggleCompletion(todo)" v-bind:class="[todo.completed ? ‘btn-success‘ : ‘btn-danger‘]">{{todo.completed ? ‘completed‘ : ‘working‘}}</button>
      </li>
    </ul>
</template>  

你可以再在外面包裹一层

<template>
<div>
   <h1>{{message}} ({{todos.length}})</h1>
    <ul class="list-group">
      <li class="list-group-item" v-for="(todo,index) in todos" v-bind:class="{‘completed‘ : todo.completed}">
        {{todo.title}}
        <button class="btn btn-warning btn-xs pull-right" v-on:click="deleteTodo(index)">Delete</button>
        <button class="btn btn-xs pull-right margin-right-10" v-on:click="toggleCompletion(todo)" v-bind:class="[todo.completed ? ‘btn-success‘ : ‘btn-danger‘]">{{todo.completed ? ‘completed‘ : ‘working‘}}</button>
      </li>
    </ul>
</div>
</template>

还有就在我们APP.vue中的数据要用函数的形式

data(){
    return{
        todos:[
          {id:1,title:"learn vuejs",completed:false},
        ],
    }
  },

在我们的main.js中定义我们的

components: { App }

App组件,我们可以把我们App组件理解为我们的一个根组件,根组件中我们又可以定义一些我们的子组件

components: {
    Hello,todoForm,todoItem
  }

  

时间: 2024-10-07 20:52:10

vue.js 2.0开发(4)的相关文章

更轻更快的Vue.js 2.0与其他框架对比(转)

更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0 在性能上有显著的提升,同时保持轻量的文件下载: 渲染层基于一个轻量级的Virtual DOM实现进行了重写,该Virtual DOM实现fork自snabbdom.新的渲染层相比v1带来了巨大的性能提升,也让Vue 2.0成为了最快速的框架之一. 根据1.0到2.0迁移指南,“大约90%的API是相

Vue.js 2.0 由浅入深,第四天 day04

## 一.模块化开发 ### 1. vue-router模块化 cnpm install vue-router -S #### 1.1 编辑main.js #### 1.2 编辑App.vue #### 1.3 编辑router.config.js ### 2. axios模块化 cnpm install axios -S 使用axios的两种方式: 方式1:在每个组件中引入axios 方式2:在main.js中全局引入axios并添加到Vue原型中 ### 3. 为自定义组件添加事件 ## 二

Vue.js 2.0 参考手册.CHM下载

下载地址 Vue.js 2.0 参考手册.CHM下载链接: http://pan.baidu.com/s/1kVbhd4b 密码: wxfh

Vue.js 2.0版

Vue.js 2.0版升级,更改了好多方法或指令 new Vue({ el:'#demo', data:{ msg:"vue2.0" } }) v-model lazy number debounce (2.0版废弃)  新加 lazy .lazy - 取代 input 监听 change 事件 .number - 输入字符串转为数字 .trim - 输入首尾空格过滤 <input v-model.lazy="msg" /> v-for v-for迭代语

Flask Vue.js全栈开发

Flask Vue.js全栈开发 1. Flask Vue.js全栈开发教程系列 Flask Vue.js全栈开发|第1章:创建第一个Flask RESTful API Flask Vue.js全栈开发|第2章:Vue.js通过axios访问Flask RESTful API Flask Vue.js全栈开发|第3章:Flask设计User用户相关API Flask Vue.js全栈开发|第4章:Vue.js调用API实现用户注册/登录/退出 Flask Vue.js全栈开发|第5章:个人主页与

【翻译】Vue.js 2.0 教程 起步

第一次在博客园上翻译东西,因为现在还没有中文的Vue.js2.0文档,很多英语不好的同学就郁闷了.以后有时间就翻译一些,不过等我翻译完,官方中文文档肯定就上线了......大家可以打开英文原网站,因为里面有些例子可以直接演示. 官方英文文档链接 正文: 起步 什么是Vue.js? Vue(发音类似view)是一个紧跟时代潮流的框架,为构建用户界面而生.不同于其他庞大的框架,Vue的设计是从底层向上逐步递增的(译者附:刚开始使用Vue不需要太多依赖).Vue的核心库不仅仅聚焦于视图层,它还非常容易

Vue.js 2.0 学习重点记录

Vue.js兼容性 Vue.js.js 不支持 IE8 及其以下版本,因为 Vue.js.js 使用了 IE8 不能模拟的 ECMAScript 5 特性. Vue.js.js 支持所有兼容 ECMAScript 5 的浏览器. Vue.js安装 安装方式有两种: 1.直接下载用script标签引入(推荐引入开发版本,压缩版本会失去错误提示和警告) 2.使用cdn方法引入 3.npm安装 npm安装的前提需要安装了nodejs,这里推荐nvm安装nodejs 附上一小段nvm使用的命令: $ n

Vue.js 2.0 由浅入深,第一天 day01

### Vue.js 五天 *汤小洋* ## 一. Vue.js简介 ### 1. Vue.js是什么 **Vue.js**也称为Vue,读音/vju:/,类似view,错误读音v-u-e 版本:v1.0 v2.0 + 是一个构建用户界面的框架 + 是一个轻量级MVVM(Model-View-ViewModel)框架,和angular.react类似,其实就是所谓的数据双向绑定 + 数据驱动+组件化的前端开发(核心思想) + 通过简单的API实现**响应式的数据绑定**和**组合的视图组件**

Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0

课程目录:第1章 课程简介介绍课程的学习目标和学习内容.第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.第3章 Vue-cli 开启 Vuejs 项目介绍 Vue 项目的脚手架,如何安装,对脚手架生成的目录文件做介绍,介绍 Vue 组件的编写方法,最后运行 demo 项目并介绍 webpack 构建脚本来说明 demo 的运行原理.第4章 项目实战-准