nodejs--vue
nodejs--vue
基础知识认识:
前端工程化
最近才兴起,nodejs(包的管理更加方便),webpack
数据双向绑定
mvm 数据驱动vue,vue改变数据
组件化开发
vue 中的常见 概念:
webpack
目的:把所有的 vue文件或者其他文件 转换成 js文件
vue (框架),vuex(组件间的通信), vue-router(路径--组件关联,跳转),axios(ajax,http请求包)
ES6(ES6语法),babel(转换器--转换成ES5)
vue框架的优势:
比 jquery 效率更好
前后端分离 --- 只提供数据
前后端融合 --- render
速度快,灵活,学习快
vue的基本语法
{{}} 插入值,里面可以放表达式
指令 v-*:是带有V-前缀的特殊属性,通过属性来操作元素
事件绑定-- v-on: @
属性绑定 -- v-bind: :
v-text 在元素中插入值
v-html 文本 加 标签
v-if 控制标签是否被注释
v-show 控制标签是否显示 (display)
v-for 循环渲染 标签
数组循环
v-for='(item,index) in arr'
{{item}}:{{index}}
对象循环
v-for='(item,key,index) in obj'
{{item}}:{{key}}:{{index}}
v-on 监听元素时间,并且执行相应的操作
函数
v-on:click='show()'
简写
@click='func1()'
对数组进行操作
push
pop
shift
unshift
splice
reverse
元素删除
修改 定义在new Vue 中的变量,相应的dom元素也会改变
this.arr.pop();
v-bind 绑定元素的属性 来执行相应的操作
v-bind:href='url'
简写
:href='url1'
v-bind:class='{div:isTrue}'
v-model 实现了视图和数据的双向绑定
把元素的值和数据绑定
当输入内容时,数据相应变化
当改变数据时,输入的内容也会发生改变
vue 的设计模式是MVVM
MVVM Model- View-ViewModel 数据展示到视图是通过ViewModel控制上去的
组件的概念就是由html,css,js构成的一个模块
模块:一个js文件就是一个模块、
vue的组件是通过一个工具(webpack)进行打包,打包成一个*.vue
webpack:一个打包机,将我们html,css,js等等打包成一个文件让我们浏览器识别。捆绑
vue的核心用法 :
1、模板语法:使用{{}}进行插值
2、指令系统:v-if,v-show,v-bind,v-on,v-for,v-model,v-html
v-if:真正的条件渲染
v-show:惰性的渲染,这个渲染方式会在标签上加style样式
v-bind:绑定属性,可以在任何的标签中绑定标签中自己的属性和自定义的属性
v-on:绑定事件,可以绑定js中所有的事件,包括click,hover,mouseover......
v-for:遍历数组
v-mode:表单控件中实现双向数据绑定
v-html:双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令
3、computed计算属性
注意:使用computed的时候默认只有getter ,它能实时监听数据属性的变化。当然了,在必要的时候我们还可以加setter
如何使用npm
npm全称:node package manger
使用npm
1.执行npm init 初始化项目 自动生成一个package.json的文件
2.npm install jquery --save
下载相应的jquery的包,并自动的生成node_modules的文件夹到该文件夹下
3.npm uninstall jquery --save 卸载jquery的包
package.json管理着我们当前项目需要的包
有时候我们会讲我们的写好的项目代码上传到github上,但github只允许上传100兆以上的项目,这时候node_modules在上传的时候会被
忽略。但是package.json管理着我们当前项目需要的包,那么我们从github上下载当前项目中,安装readme的文档提示做需求即可,一般需要npm instal
vue中的数据流
===》自上而下
组件之间的通信:
1.父组件往子组件传值:使用自定义属性,子组件一定要验证自定义的属性的类型
2.子组件往父组件传值:使用自定义事件
3.同级组件之间的传值:官方建议使用vuex,第三天会讲
vue+vue-router 来创建单页面应用
单页面应用的网站:知乎、稀土掘金、少数派、网易云、饿了么移动端、豆瓣等等
使用vue-router
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<div id="app">
<h1>Hello App!</h1>
<p>
<!-- 使用 router-link 组件来导航. -->
<!-- 通过传入 `to` 属性指定链接. -->
<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
<router-link to="/foo">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
</p>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
</div>
JavaScript
// 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter)
// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
})
// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({
router
}).$mount('#app')
// 现在,应用已经启动了!
实例
main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import axios from 'axios'
import store from './store/store'
Vue.prototype.$axios = axios;
// 全局变量的声明 ---
Vue.config.productionTip = false;
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
store/store.js
import Vue from 'vue'
import Vuex from 'vuex'
import Cookie from 'vue-cookies'
Vue.use(Vuex);
export default new Vuex.Store({
state:{
username:Cookie.get('username'),
token:Cookie.get('token')
},
mutations:{
// 组件中 通过 this.store.commit 参数 调用
saveToken(state,data){
state.username = data.username;
state.token = data.token;
//设置到内存中
Cookie.set('username',data.username,'20min');
Cookie.set('token',data.token,'20min')
//设置到cookie中
},
clearToken(state){
state.username = null;
state.token = null;
Cookie.remove('username');
Cookie.remove('token')
}
}
})
router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/components/Index'
import Login from '@/components/Login'
import Course from '@/components/Course'
import Luffy from '@/components/Luffy'
import News from '@/components/News'
import NotFound from '@/components/NotFound'
import CourseDetail from '@/components/CourseDetail'
Vue.use(Router);
export default new Router({
routes: [
{
path: '/',
name: 'Index',
component: Index
},
{
path: '/index',
name: 'Index',
component: Index
},
{
path: '/login',
name: 'Login',
component: Login
},
{
path: '/course',
name: 'Course',
component: Course
},
{
path: '/course/detail/:id/',
name: 'CourseDetail',
component: CourseDetail
},
{
path: '/luffy',
name: 'Luffy',
component: Luffy
},
{
path: '/news',
name: 'News',
component: News
},
{
path: '*',
name: '*',
component: NotFound
},
],
mode:'history'
})
Course.vue
<template>
<div class="course">
<ul>
<li v-for="item in courseArray">
<router-link :to="{'path':'/course/detail/'+item.id}">{{item.name}}</router-link>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'Course',
data () {
return {
courseArray:[
]
}
},
mounted:function(){
this.initCourse()},
methods:{
initCourse(){
var that = this;
this.$axios.request({
url:'http://127.0.0.1:8000/course/',
method:'GET',
responseType:'json'
}).then(function (response) {
that.courseArray = response.data;
})
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
li{
list-style: none;
}
</style>
nodejs--vue的更多相关文章
- nodejs+vue.js+webpack
前端: nodejs+vue.js+webpack 后台:ssb(Spring+SpringMVC + mybatis-plus) 开发工具:idea 一.前提 1.安装nodejs 2.安装完nod ...
- nodejs, vue, webpack 项目实践
vue 及 webpack,均不需要与nodejs一期使用,他们都可以单独使用到任何语言的框架中. http://jiongks.name/blog/just-vue/ https://cn.vuej ...
- nodejs vue的安装
1.https://nodejs.org/en/ 下载最新版nodejs 2.安装好后win+R输入cmd(管理员权限键入):node -v(node版本)npm -v(npm版本)查看版本号,如图所 ...
- nodeJs+vue安装教程详解 相信
相信很多朋友都在装node服务和安装vue的时候会遇到一些问题,下面为大家详细介绍node服务的安装以及vue的安装: 1.nodeJs官网下载版本(根据自己电脑的配置进行相应下载即可):默认安装路径 ...
- Windows安装VsCode 和Nodejs Vue
一.安装VSCode 1.在官网下载并安装VSCode https://code.visualstudio.com/Download 注意:解压到非系统盘(节约系统盘空间,也方便后面使用) 文件夹最好 ...
- nodejs vue SyntaxError:Block-scoped declarations (let,const,function,class) not yet supported
下午在git上导入之前写的代码到本地环境,执行npm run dev报错. 在我之前的环境中是没有问题的,这个错误信息也没看懂是什么原因引起的, 猜测可能是nodejs版本太低,于是重新下载了一个wi ...
- nodejs vue 微信公众号开发(二)申请微信测试号
1.打开微信测试公众号开发平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码登陆
- 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)
在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...
- vue不是内部或外部命令,配置一个Path系统变量就可以解决
作为一个vue小白,最近为vue安装真是操碎了心.无论怎么查找网上的教程,还是解决不了"vue不是内部或外部的命令"诸如此类的问题.好在功夫不负有心人,终于在多次的试验下,成功解决 ...
- VUE初体验篇-安装
现代前端框架大行其道,讲前端思想从操作dom的阶段,升级到操作数据的阶段.vue作为三大前端框架之一,其中平缓的学习曲线,让好多前端新手非常喜欢,应用也越来越广泛.虽然其他两个框架有facebook, ...
随机推荐
- 剑指offer 面试7题
面试7题: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...
- 剑指offer 面试19题
面试19题: 题目:正则表达式匹配 题:请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是 ...
- $Android设置TextView的字体
做项目的时候,需要使用到手写字体来让内容更加的美观.可是程序中默认使用的是系统的默认字体,怎么将TextView(或EditText)的字体设置成自己想要的字体呢?步骤如下: 1.下载字体文件(.tt ...
- grads 读取shp
自从GrADS2.0.a8版本开始,GrADS引入了对shp图形的支持,关于此格式在这里不多说, 于是今晚就简单测试了一下最简单画图和查询命令(后续还将测试输出shp图形的命令) 测试数据采用的 ...
- 微信小程序相关资料整理
微信小程序官方介绍https://mp.weixin.qq.com/debug/wxadoc/introduction/index.html?t=201818 微信小程序开发资源https://jue ...
- Linux文件系统管理 挂载命令mount
概述 mount命令用来挂载Linux系统外的文件. Linux 中所有的存储设备都必须挂载之后才能使用,包括硬盘.U 盘和光盘(swap 分区是系统直接调用的,所以不需要挂载).不过,硬盘分区在安装 ...
- css li 间隙
如果 li 未浮动,而 li 子元素浮动,则ie6和ie7下会出现间隙,解决办法是给 li 写上css hack *vertical-align:bottom;
- PHP递归和非递归遍历文件夹下文件
function readDirFiles($dir){ $files= []; $queue=[realpath($dir)]; $currentPath = current($queue); wh ...
- Django用户注册、邮箱验证实践
算法流程如下:1)处理用户注册数据,存入数据库,is_activity字段设置为False,用户未认证之前不允许登陆2)产生token,生成验证连接URL3)发送验证邮件4)用户通过认证邮箱点击验证连 ...
- USB引脚及定义
USB 2.0 USB接口定义: USB引脚定义: 针脚 名称 说明 接线颜色 1 VCC +5V电压 红色 2 D- 数据线负极 白色 3 D+ 数据线正极 绿色 4 GND 接地 黑色 Min ...