Artikel ini membawakan anda set tutorial lengkap tentang vue, termasuk contoh praktikal saya harap ia akan membantu semua orang.
Vue (sebutan /vjuː/, serupa dengan View) ialah rangka kerja progresif untuk membina antara muka pengguna. Tidak seperti rangka kerja besar lain, Vue direka bentuk untuk digunakan lapisan demi lapisan dari bawah ke atas. Pustaka teras Vue hanya memfokuskan pada lapisan paparan, yang bukan sahaja mudah untuk dimulakan, tetapi juga mudah untuk disepadukan dengan perpustakaan pihak ketiga atau projek sedia ada. Sebaliknya, apabila digabungkan dengan rangkaian alat moden dan pelbagai perpustakaan sokongan, Vue mampu sepenuhnya menyediakan pemacu untuk aplikasi satu halaman yang kompleks.
1.1 Menggunakan kaedah CDN (pemula Gunakan)
Ia juga boleh diimport terus menggunakan CDN, kodnya adalah seperti berikut:
<script></script>
1.2Vue-cli scaffolding
Gunakan Vue-cli scaffolding untuk membina projek Vue, yang akan diterangkan secara terperinci dalam perkara ketujuh di bawah. (Disyorkan untuk projek sederhana dan besar).
1. Buat fail HTML
2. Perkenalkan Vue.js
<script></script>
Contoh lengkap:
nbsp;html>贝西说 <script></script>{{message}}
<script> var vue=new Vue({ el:"#app", /*model数据*/ data:{ message:"hello,vue" } }); </script>
Kesan tunjuk cara: (data dipacu paparan, paparan dipacu data)
v-bindv-bind digunakan untuk mengikat data dan atribut elemen
Lengkap contoh:
Nota:
<p> <a>点我</a> </p> <script> var app = new Vue({ el:'.app', data:{ url:"https://www.baidu.com", } }); </script>
Begitu juga, kita juga boleh mengikat atribut imej src dan kelas hiperpautan
Nota:
<p> <a>点我</a> <img alt="Set tutorial lengkap Vue yang paling sistematik (penjelasan dan contoh terperinci)" > </p> <script> var app = new Vue({ el:'.app', data:{ url:"https://www.baidu.com", imgsrc:"https://cn.vuejs.org/images/logo.png" } }); </script>
Biasanya kita boleh menyingkat v-bind: sebagai:
<p> <a>点我</a></p>
<p> <a>点我</a></p>
v-if,v-elsev-if,v-else
Contoh penuh:
<p> </p><p>YES</p> <p>NO</p> <script> var app = new Vue({ el:"#app", data:{ ok:true, } }); </script>
<p> </p><p>您好,admin</p> <p>贾志杰</p> <p>您无权访问!</p> <script> var app = new Vue({ el:"#app", data:{ role:"admin", } }); </script>
v-untuk1. v-untuk gelung tatasusunan biasa
2. v-untuk gelung tatasusunan objek
<p> </p><p>{{item}}----索引:{{index}}</p> <script> var app = new Vue({ el:"#app", data:{ list:[1,2,3,4,5], } }); </script>
3. v-untuk objek gelung
<p> </p><p>{{user.id}}---{{user.name}}-----索引:{{index}}</p> <script> var app = new Vue({ el:"#app", data:{ list:[ {id:1,name:'beixi'}, {id:2,name:'jzj'}, {id:3,name:'贾志杰'} ], } }); </script>
4. v-untuk nombor gelung
<p> </p><p>值:{{val}}---键:{{key}}-----索引:{{index}}</p> <script> var app = new Vue({ el:"#app", data:{ user:{ name:"beixi", age:"18", sex:"男" } } }); </script>
3 peristiwa mengikat Vue
<p> </p><p>这是第{{count}}次循环</p> <script> var app = new Vue({ el:"#app", data:{ } }); </script>
v-on: nama acara = "nama kaedah"
singkatan: @nama acara = "nama kaedah"nama acara: klik kekunci| keyup|mouseover|mouseout|Nama acara tersuaiNota: v-bind boleh disingkatkan sebagai : v -on: boleh disingkatkan sebagai @
pemantauan acara v-on, contoh lengkap:
nbsp;html>贝西说 <script></script>{{count}}
<script> var app = new Vue({ el:"#app", data:{count:1 }, methods:{ sub:function(){ this.count-=1; } } }); </script>
4. Vue: Pengikatan dua kali bentuk, komponen
1 Apakah itu pengikatan data dua hala Vue. js ialah Rangka kerja MVVM, iaitu pengikatan data dua hala, iaitu, apabila data berubah, paparan juga berubah, dan apabila paparan berubah, data juga akan berubah secara serentak. Ini boleh dianggap sebagai intipati Vue.js. Perlu diingat bahawa pengikatan data dua hala yang kita bicarakan mestilah untuk kawalan UI tidak akan melibatkan pengikatan data dua hala. Pengikatan data sehala adalah prasyarat untuk menggunakan alat pengurusan negeri. Jika kami menggunakan vuex, aliran data juga adalah item tunggal, yang akan bercanggah dengan pengikatan data dua hala. 2. Gunakan pengikatan data dua hala dalam bentuk Anda boleh menggunakan arahanNota: v-model akan mengabaikan nilai awal nilai, ditanda dan atribut terpilih semua elemen borang dan sentiasa menggunakan data tika Vue sebagai sumber data. Anda harus mengisytiharkan nilai awal dalam pilihan data komponen melalui JavaScript!
Contoh 1:
Kesan lengkap:
<p> <input>{{message}} </p> <script> var app = new Vue({ el:"#app", data:{message:'' } }); </script>
Contoh 2:
<p> <input>男 <input>女 </p><p>{{gender}}</p> <script> var app = new Vue({ el:"#app", data:{gender:'' } }); </script>
<p> <select> <option>--请选择--</option> <option>北京</option> <option>上海</option> <option>广州</option> </select> </p><p>{{selected}}</p> <script> var app = new Vue({ el:"#app", data:{selected:'' } }); </script>
组件是可复用的 Vue 实例,说白了就是一组可以重复使用的模板,跟 JSTL 的自定义标签、Thymeleaf 的 th:fragment 等框架有着异曲同工之妙。
通常一个应用会以一棵嵌套的组件树的形式来组织:
例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。
注意:在实际开发中,我们并不会用以下方式开发组件,而是采用 vue-cli 创建 .vue 模板文件的方式开发,以下方法只是为了让大家理解什么是组件。
<p> <beixi></beixi> </p> <script> //注册组件 Vue.component("beixi",{ template:'<li>hello' }); var app = new Vue({ el:"#app", }); </script>
说明:
<p> <!--组件:使用props把值传递给组件--> <blog-post></blog-post> </p> <script> Vue.component("blog-post",{ props:['value'], template:'<li>{{value}}' }); var app = new Vue({ el:"#app", data:{ items:['beixi','jzj','贾志杰'] } }); </script>
说明:
v-for=“item in items”:遍历 Vue 实例中定义的名为 items 的数组,并创建同等数量的组件
v-bind:value=“item”:将遍历的 item 项绑定到组件中 props 定义的名为 value属性上;= 号左边的 value 为 props 定义的属性名,右边的为 item in items 中遍历的 item 项的值
Axios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,她的主要作用就是实现 AJAX 异步通信,其功能特点如下:
GitHub:https://github.com/axios/axios
中文文档:http://www.axios-js.com/
由于 Vue.js 是一个 视图层框架 并且作者(尤雨溪)严格准守 SoC (关注度分离原则),所以 Vue.js 并不包含 AJAX 的通信功能,为了解决通信问题,作者单独开发了一个名为 vue-resource 的插件,不过在进入 2.0 版本以后停止了对该插件的维护并推荐了 Axios 框架。少用jQuery,因为它操作Dom太频繁!
咱们开发的接口大部分都是采用 JSON 格式,可以先在项目里模拟一段 JSON 数据,数据内容如下:创建一个名为 data.json 的文件并填入上面的内容,放在项目的根目录下
{ "name": "贝西说", "url": "https://blog.csdn.net/beixishuo", "page": 1, "isNonProfit": true, "address": { "street": "太谷", "city": "山西晋中", "country": "中国" }, "links": [ { "name": "bilibili", "url": "https://space.bilibili.com/474668932" }, { "name": "贝西说", "url": "https://blog.csdn.net/beixishuo" }, { "name": "百度", "url": "https://www.baidu.com/" } ]}
完整示例:
<script></script> <script></script>
{{info.name}}
{{info.address}}
贝西说<script> var app=new Vue({ el:"#app", //data: 属性 data:function(){//需要处理(返回)后台数据在页面上渲染时使用 return{ //请求的返回参数格式必须和json字符串一样 info:{ name:null,//相当于形参占位,实际参数data.json会赋予 url:null, address:{ street:null, city:null, country:null } } } }, mounted:function(){//mounted钩子函数,相当于java中main函数。可以调用methods中定义的函数 // axios.get('data.json').then(resp=>(console.log(resp.data))); axios.get('data.json').then(resp=>(this.info=resp.data)); } })</script>
注意:
读取本地json文件中的数据时读取失败,如图
解决方式就是右击浏览器快捷方式,更改属性,在目标后面加上
–allow-file-access-from-files
说明:
可以通过将相关配置传递给 axios 来进行请求。
axios(config)
// 发送一个 POST 请求axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' }});
axios(url[, config])
// 发送一个 GET 请求 (GET请求是默认请求模式) axios('/user/12345');
请求方法别名
为了方便起见,已经为所有支持的请求方法提供了别名。
axios.request(config)
axios.get(url [,config])
axios.delete(url [,config])
axios.head(url [,config])
axios.post(url [,data [,config]])
axios.put(url [,data [,config]])
axios.patch(url [,data [,config]])
注意
当使用别名方法时,不需要在config中指定url,method和data属性。
当一些数据需要根据其它数据变化时,需要进行处理才能去展示,虽然vue提供了绑定数据表达式绑定的方式,但是设计它的初衷只是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,对于一些比较复杂和特殊的计算有可能就捉襟见肘了,而且计算的属性写在模板里也不利于项目维护
computed主要的作用:
简单理解为:把计算的结果当作属性返回去
<script></script>
求和结果{{result}}
<script> var app=new Vue({ el:"#app", data:{num1:1,num2:2}, computed:{//计算属性 result:function(){ return parseInt(this.num1)+parseInt(this.num2); } } })</script>
Vue脚手架指的是vue-cli,它是一个专门为单页面应用快速搭建繁杂的脚手架,它可以轻松的创建新的应用程序而且可用于自动生成vue和webpack的项目模板。
利用vue-cli脚手架来构建Vue项目需要先安装Node.js和NPM环境。
1.Node.js的安装
Node.js的安装比较简单,大家需要在node.js官网(https://nodejs.org/en/download/)下载并安装node.js环境,windows的推荐下载Windows Installer (.msi)。同时,大家会得到一个附送的NPM工具。
.|-- build // 项目构建(webpack)相关代码| |-- build.js // 生产环境构建代码| |-- check-version.js // 检查node、npm等版本| |-- dev-client.js // 热重载相关| |-- dev-server.js // 构建本地服务器| |-- utils.js // 构建工具相关| |-- webpack.base.conf.js // webpack基础配置| |-- webpack.dev.conf.js // webpack开发环境配置| |-- webpack.prod.conf.js // webpack生产环境配置|-- config // 项目开发环境配置| |-- dev.env.js // 开发环境变量| |-- index.js // 项目一些配置变量| |-- prod.env.js // 生产环境变量| |-- test.env.js // 测试环境变量|-- node_modules //所需要依赖资源|-- src // 源码目录| |-- assets //存放资产文件| |-- components // vue公共组件| |-- router //存放路由js文件,用于页面的跳转| |-- App.vue // 页面入口文件| |-- main.js // 程序入口文件,加载各种公共组件|-- static // 静态文件,比如一些图片,json数据等| |-- data // 群聊分析得到的数据用于数据可视化|-- .babelrc // ES6语法编译配置|-- .editorconfig // 定义代码格式|-- .gitignore // git上传需要忽略的文件格式|-- README.md // 项目说明|-- favicon.ico |-- index.html // 入口页面|-- package.json // 项目基本信息.
对于开发者更多操作的是src目录:
|-- src // 源码目录| |-- assets //存放资产文件| |-- components // vue公共组件| |-- router //存放路由js文件,用于页面的跳转| |-- App.vue // 页面入口文件| |-- main.js
④ 输入npm run dev命令来启动项目,如图所示。
运行成功后在浏览器输入:http://localhost:8080,访问项目结果如图所示。
更多编程相关知识,请访问:编程入门!!
Atas ialah kandungan terperinci Set tutorial lengkap Vue yang paling sistematik (penjelasan dan contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!