1. Introduction à Vue.js
1. Les principales fonctionnalités de Vue : (1) Simplicité (2) Léger (3) Rapide (4) Piloté par les données (5) Adapté aux modules (6) Componentisation
(1) Simplicité
Regardons un morceau de code Angular qui implémente la liaison bidirectionnelle
// html <body ng-app="myApp"> <div ng-controller="myCtrl"> <p>{{ note }}</p> <input type="text" ng-model="note"> </div> </body> // js var myModule = angular.module('myApp', []); myModule.controller('myCtrl', ['$scopp', function($scope) { $scope.note = ''; ]);
Regardons ensuite le code Vue :
// html <body> <div id="app"> <p>{{ note }}</p> <input type="text" v-model="note"> </div> </body> // js var vm = new Vue({ el: '#app', data: { note: '' } })
En comparaison , personnellement, je pense que le style de codage de Vue est plus concis et facile à comprendre.
(2) Élégance
Bien que Vue soit un framework relativement léger, il est simple et léger et très convivial, et l'API qu'il fournit est également très facile à comprendre. des instructions et des attributs très pratiques.
Par exemple :
1), lier un événement de clic
2), liaison des attributs dynamiques
3), modificateurs pratiques
<!-- 阻止单击事件冒泡 --> <a @click.stop="doSomething"></a> <!-- 只在按下回车键的时候触发事件 --> <input @keyup.enter="submit">
4), que diriez-vous des fonctionnalités de paramètres pratiques
<!-- debounce 设置一个最小的延时 --> <input v-model="note" debounce="500"> <!-- 在 "change" 而不是 "input" 事件中更新数据 --> <input v-model="msg" lazy>
, n'est-ce pas très élégant ?
(3) Compact
En parlant de compacité, vous devez d'abord faire attention à la taille du code source de Vue Le code source de la version de production de Vue (c'est-à-dire la version min) n'est que de 72,9. Ko, et le site officiel l'appelle gzip. Après compression, il ne fait que 25,11 Ko, soit la moitié de la taille des 144 Ko d'Angular.
L'un des avantages d'être compact est qu'il permet aux utilisateurs de choisir les solutions correspondantes plus librement et qu'il donne aux utilisateurs plus d'espace pour se coordonner avec d'autres bibliothèques.
Par exemple, le noyau de Vue n'inclut pas les fonctions de routage et Ajax par défaut. Cependant, si le routage et AJAX sont nécessaires dans le projet, vous pouvez directement utiliser la bibliothèque officielle Vue-router et le tiers. plug-in vue-resource fourni par Vue En même temps, vous pouvez également utiliser d'autres bibliothèques ou plug-ins que vous souhaitez utiliser, tels que jQuery, AJAX, etc.
N'est-ce pas très flexible ?
(4) Les maîtres ne manquent pas
Bien que Vue soit petite, elle possède tous les organes internes même si elle est petite, et elle est également pratique lors de la création d'applications à grande échelle.
1) Modularisation
Combiné avec certains outils de création de modules tiers, tels que CommonJS, RequireJS ou SeaJs, le code peut être facilement modularisé.
Cependant, l'éditeur ici ne recommande pas d'utiliser les outils de construction ci-dessus. Utiliser directement la fonction modulaire d'ES6 et la combiner avec Webpack pour l'empaquetage correspondant est actuellement la solution la plus populaire.
Si vous ne comprenez pas les fonctions du module ES6, veuillez consulter : http://es6.ruanyifeng.com/#docs/module
Dans les prochains articles, je le présenterai également, notamment Configuration du pack Web.
2), composantisation
La fonction de composantisation de Vue peut être considérée comme l'un de ses points forts en mettant le code html, CSS et js d'un certain composant de la page dans un .vue. La gestion dans les fichiers peut grandement améliorer la maintenabilité du code.
Par exemple :
// App.vue <template> <div class="box" v-text="note"></div> </template> <script> export default { data () { return { note: '这是一个组件的html模板!' } } } </script> <style scoped> .box { color: #000; } </style>
Nous pouvons également écrire un langage de prétraitement dans le composant :
// App.vue <template> div(class="box" v-text="text") </template> <script> export default { data () { return { note: '这是一个组件的html模板!' } } } </script> <style> .box color: #000 </style>
Bien sûr, nous devons le packager via webpack lors de l'écriture de ceci De cette manière, il est recommandé d'utiliser Webpack vue-loader et d'utiliser la syntaxe ES6 qui doit être installée pour la conversion. Étant donné que l'article est une brève discussion de Vue.js, je ne donnerai pas ici une introduction approfondie.
3), Routage
Comme Angular, Vue a aussi sa fonction de routage. Grâce à la fonction de routage, nous pouvons charger divers composants à la demande et créer facilement des applications d'une seule page. Ce qui suit est un simple fichier de configuration de routage :
// router.js 'use strict' export default function(router) { router.map({ '/': { component: function (resolve) { require(['./components/Foo.vue'], resolve) } }, '/foo': { component: function (resolve) { require(['./components/Foo.vue'], resolve) } }, '/bar': { component: function (resolve) { require(['./components/Bar.vue'], resolve) } } }) }
(1) Comment utiliser
Dans le fichier de composant .vue, nous écrivons le modèle comme ceci, c'est-à-dire le code html :
<table class="table table-hover table-bordered"> <thead> <tr> <th width="10%">id</th> <th width="30%">name</th> <th width="40%">content</th> <th width="20%">remark</th> </tr> </thead> <tbody> <tr v-for="data in tableList"> <td v-text="data.num"></td> <td v-text="data.author"></td> <td v-text="data.contents"></td> <td v-text="data.remark"></td> </tr> </tbody> <tfoot> <tr> <td colspan="4"> <div class="col-sm-12 pull-right"> <boot-page :async="false" :data="lists" :lens="lenArr" :page-len="pageLen"></boot-page> </div> </td> </tr> </tfoot> </table>
Le code JavaScript qui utilise des données statiques, c'est-à-dire le contenu de la balise de script, est le suivant :
<script> import bootPage from './components/BootPage.vue' export default { data () { return { lenArr: [10, 50, 100], // 每页显示长度设置 pageLen: 5, // 可显示的分页数 lists: [ {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}, {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}, {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}, {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}, {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}, {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'} ], // 表格原始数据,使用服务器数据时无需使用 tableList: [] // 分页组件传回的分页后数据 } }, components: { bootPage }, events: { // 分页组件传回的表格数据 'data' (data) { this.tableList = data } } } </script>
Généralement, nous utilisons rarement des données de table statiques, la plupart des données d'application. Elles sont toutes obtenues côté serveur, voici donc une méthode pour obtenir les données de pagination du serveur :
Le composant HTML qui utilise les données du serveur est la suivante :
où url est l'adresse de requête du serveur ; param est la requête à l'objet Parameter envoyée par le serveur ;
Le code pour utiliser le javascript des données du serveur est le suivant :
<script> import bootPage from './components/BootPage.vue' export default { data () { return { lenArr: [10, 50, 100], // 每页显示长度设置 pageLen: 5, // 可显示的分页数 url: '/bootpage/', // 请求路径 param: {}, // 向服务器传递参数 tableList: [] // 分页组件传回的分页后数据 } }, methods: { refresh () { this.$broadcast('refresh') // 这里提供了一个表格刷新功能 } }, components: { bootPage }, events: { // 分页组件传回的表格数据(这里即为服务器传回的数据) 'data' (data) { this.tableList = data } } } </script>
Remarque : en plus du contenu du tableau transmis à la table des composants, le serveur a également besoin d'un nom de clé pour le nombre total de pages, nommé page_num
Pour plus d'articles connexes sur la table. Composants de pagination basés sur Vue.js, veuillez faire attention au site Web PHP chinois !