单文件组件使用
单文件组件使用
组件有两种:普通组件、单文件组件
普通组件的缺点:
- html代码是作为js的字符串进行编写,所以组装和开发的时候不易理解,而且没有高亮效果。
- 普通组件用在小项目中非常合适,但是复杂的大项目中,如果把更多的组件放在html文件中,那么维护成本就会变得非常昂贵。
- 普通组件只是整合了js和html,但是css代码被剥离出去了。使用的时候的时候不好处理。
将一个组件相关的html结构,css样式,以及交互的JavaScript代码从html文件中剥离出来,合成一个文件,这种文件就是单文件组件,相当于一个组件具有了结构、表现和行为的完整功能,方便组件之间随意组合以及组件的重用,这种文件的扩展名为“.vue”,比如:"Home.vue"。
如何使用前端发过来的vue项目
如果要运行vue项目必须要有node_moduls,主要存放第三方模块,没它也就是没有没有第三方模块,package.json记录了第三方模块
在项目目录下,重新下载第三放模块命令npm install
vue项目文件介绍
src 主开发的单文件组件全部在这个目录下的components目录下
static 静态资源目录,所有的css,js文件放在这个文件夹
dist 项目打包发布文件夹,最后要上线单文件都在这个文件夹中[后面打包项目,让项目中的vue编译成js代码以后,dist就出现了]
config是配置目录
build是项目打包时依赖的目录
src/router 路由,后面我们在使用?Router路由的时候,自己声明
创建组件
在组件中编辑三个标签,编写视图、vm对象和css样式代码
template编写html代码的地方
<template> <div id="Home"> <span @click="num--">-</span> </div> </template>
script编写vue.js代码
<script> export default { name:"Home", data:function(){ return{ num:0, } } } </script>
style编写当前组建的样式代码
<style scoped> /*--scoped是声明样式只能作用于该组件中*/ .sub, add{ boder: 1px solid red; padding: 4px 7px; /*!--四个参数分别代表:上下左右*/ } </style>
如何使用组件中使用子组件
子组件编写
<template> <div> <h3>头部子组件</h3> </div> </template> <script> export default { name:Fouter, data(){ return{} }, methods:{} } </script> <style scoped> /* scoped是限制css样式只作用于该组件 */ h3{ color: red; } </style>
同级目录的组件下应用
<template> <div> <h3>组件部分</h3> </div> </template> <script> import Fouter from "./common/Fouter" export default { name:"Home", data(){ reutrn{ message:"Home组件", num:0, } }, method:{ show(){ alert("显示数据") } }, components:{ Fouter, } } </script> <style scoped> /*scoped是限制css样式中作用于该组件*/ </style>
传递数据
父组件的数据传递给子组件
传输父组件中不变的数据
如果是随着改变的数据,需要在传递的时候用v-bind绑定
子组件数据传递给父组件
类似冒泡的方式传递
子组件写法
<template> <input type="number" v-model="num"> </template> <script> export default { name:"Footer" data(){ return{ num:0, } }, methods:{ this.$emit("post" this.num) } } </script> <style scoped> /*scoped限制组件css样式影响其他组件*/ </style>
组件写法
<template> <Fouter @post="get_data"/> <h3> 组件部分 </h3> <p>{{num}}</p> </template> <script> import Fouter from "./common/Fouter" export default { name:"Home", data(){ return{ num:0 } }, methods:{ get_data(data){ //data是子组件中传递过来的数据num console.log(data); this.num = data //子组件中修改父组件的数据 } }, components:{ Footer, } } </script> <style scoped> /*scoped限制组件中css样式*/ </style>
js在本地保存数据方法
对于有些通过ajax获取本地数据,如需要在多个页面或者多个组件中使用到,那么我们使用html5本地存储对象保存
在存储的时候先使用JSON.stringify,将数据变成字符串保存
取出去的时候,使用JSON.params
html5提供开发者保存数据到客户端的两个新对象 window.localStrorage 永久保存在本地 window.sessionStorage 会话存储 两个都是保存数据的,只是保存数据的周期不同 localStorage.setItem("变量名","变量值"); #存储数据 localStorage.getItem("变量名"); 获取数据 localStorage.removaItem("变量名"); 删除数据 localStorage.clear(); 清空本地存储
本地储存练习:https://www.cnblogs.com/g15009428458/articles/12309712.html