• Vue前端框架


    一、简介

    Vue是一个渐进式(真正用到才引用)的JavaScript框架与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,与现代化的工具以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

    Vue.js属于SPA一员。

    英文全称:Single Page Web Application ,SPA

    中文全称:单页Web应用。

    整个应用就一个页面,客户端页面通过与服务端的交互动态更新页面中内容。

    二、模板语法

    (1)普通文本

    data() 函数返回值就是Model 对象。方法data()是固定的。

    {{}}就是从Model中取值。

    1. <template>
    2. <div id="app">
    3. 姓名:{{name}} 年龄:{{age}}
    4. div>
    5. template>
    6. <script>
    7. export default {
    8. name: 'App',
    9. data(){
    10. return{
    11. name:"chen",
    12. age:"18"
    13. }
    14. }
    15. }
    16. script>
    17. <style>
    18. #app {
    19. font-family: Avenir, Helvetica, Arial, sans-serif;
    20. -webkit-font-smoothing: antialiased;
    21. -moz-osx-font-smoothing: grayscale;
    22. text-align: center;
    23. color: #2c3e50;
    24. margin-top: 60px;
    25. }
    26. style>

     (2)HTML支持:

    如果希望能够解析HTML,必须使用v-html指令。

    v-html是任意HTML标签的属性,v-html的取值可以是Model中定义的字段。

    1. <template>
    2. <div id="app">
    3. <img alt="Vue logo" src="./assets/logo.png">
    4. <HelloWorld msg="Welcome to Your Vue.js App"/>
    5. <p>
    6. 我们的名称为:{{name}},已经成立了{{age}}年了。<br>
    7. 描述:<span v-html="desc">span>
    8. p>
    9. div>
    10. template>
    11. <script>
    12. import HelloWorld from './components/HelloWorld.vue'
    13. export default {
    14. name: 'App',
    15. components: {
    16. HelloWorld
    17. },
    18. data(){
    19. return {
    20. name:"北京尚学堂",
    21. age: 15,
    22. desc:"我是好人"
    23. }
    24. }
    25. }
    26. script>

     三、指令

    (1)判断

    1. <template>
    2. <div id="bjsxt">
    3. <p v-if="age<10">
    4. 不到10年了
    5. p>
    6. <p v-else-if="age<14 && age >=10">
    7. 不到14年了
    8. p>
    9. <p v-else>
    10. 大于14年了
    11. p>
    12. div>
    13. template>
    14. <script>
    15. export default {
    16. name: 'App',
    17. data() {
    18. return {
    19. name: "北京尚学堂-Java学院",
    20. age: 15
    21. }
    22. }
    23. }
    24. script>

    (2)循环遍历

    v-for=”迭代变量 in 数组属性”

    :key=”迭代变量” 此属性必须写,否则页面报错

    1. <template>
    2. <div id="bjsxt">
    3. <ul>
    4. <li v-for="subject in subjects" :key="subject">
    5. {{subject}}
    6. li>
    7. ul>
    8. div>
    9. template>
    10. <script>
    11. export default {
    12. name: 'App',
    13. data() {
    14. return {
    15. name: "北京尚学堂-Java学院",
    16. age: 15,
    17. subjects: ["Java", "AI", "大数据","前端"]
    18. }
    19. }
    20. }
    21. script>

    (3)事件

    Vue中事件也可以绑定给特定的方法进行处理。

    @click取值是方法名称

    methods是固定属性。里面定义了多有事件能绑定的方法。

    jqk:function(event){}

    • jqk 是方法名。

    • event是方法形参,在js中方法形参名称随意。只要@click中使用没有参数的方法时,都会默认传递事件对象。如果方法中不使用事件对象,function里面就不需要写event了,在Vue中变量声明后必须使用。

    1. <template>
    2. <div id="app">
    3. <button @click="jqk">clickbutton>
    4. div>
    5. template>
    6. <script>
    7. export default {
    8. name: 'App',
    9. data(){
    10. return {
    11. field:"值"
    12. };
    13. },
    14. methods:{
    15. jqk:function (event) {
    16. // this是当前Vue对象
    17. alert(this.field);
    18. if(event){
    19. alert(event.target.tagName)
    20. }
    21. }
    22. }
    23. }
    24. script>

     (4)事件传参

    • 字符串值必须有单引号。

    • 没有单引号参数(field),调用data()中属性

    • 方法中不需要使用事件对象时就不写$event。但是如果需要使用事件对象,必须手动传递事件对象,且必须叫做$event,$event是全局Vue对象原型(prototype)里面的属性。

    • 事件调用方法时传递了多个参数,在定义方法时可以只接收参数中前N个(N>=0&&N<=调用时参数个数),但是一定接收了,就必须使用。

    1. <template>
    2. <div id="app">
    3. <button @click="jqk('name',$event)">clickbutton>
    4. <button @click="jqk(field,$event)">clickbutton>
    5. div>
    6. template>
    7. <script>
    8. export default {
    9. name: 'App',
    10. data(){
    11. return {
    12. field:"值"
    13. };
    14. },
    15. methods:{
    16. jqk:function (name,event) {
    17. alert("name:"+name);
    18. if(event){
    19. alert(event.target.tagName)
    20. }
    21. }
    22. }
    23. }
    24. script>

    四、组件

    (1)组件:如果项目中多次用到类似效果,就可以把这个效果进行自定义组件

    (2)新建vue文件:在src/components中新建一个文件。名称任意。示例中叫做MyComponent.vue。

    【{{jqk}} 获取组件传递参数的值】 【props:定义组件传递的参数名称和类型】

    1. <template>
    2. <div>
    3. <div>这是一个组件div>
    4. <div>{{jqk}}div>
    5. div>
    6. template>
    7. <script>
    8. export default {
    9. name: "MyComponent",
    10. props: {
    11. jqk: String
    12. }
    13. }
    14. script>
    15. <style scoped>
    16. style>

     (2)引用组件:【jqk是参数名】【import 导入组件并设置名称为MyComponent】【components 声明组件】

    1. <template>
    2. <div id="app">
    3. <MyComponent jqk="这是传递的内容"/>
    4. div>
    5. template>
    6. <script>
    7. import MyComponent from "@/components/MyComponent";
    8. export default {
    9. name: 'App',
    10. components:{
    11. MyComponent
    12. }
    13. }
    14. script>

     (3)参数类型

    类型名说明
    String字符串
    Number数字
    Boolean布尔
    Array数组
    Object对象
    Function函数
    Promise构造方法

    五、路由

    效果:不同的URL显示不同的内容。

    (1)安装路由依赖

    cnpm install --save vue-router@3.1.6

    (2)创建配置路由的js文件router/index.js

    1. import Router from 'vue-router'
    2. import First from "@/pages/First";
    3. import Second from "@/pages/Second";
    4. import Vue from 'vue';
    5. //启用路由
    6. Vue.use(Router);
    7. const router = new Router({
    8. // 没有history,访问URL会有#
    9. mode:"history",
    10. routes: [
    11. {
    12. path: "/first",
    13. component: First
    14. },
    15. {
    16. path: "/second",
    17. component: Second
    18. }
    19. ]
    20. });
    21. //返回路由对象
    22. export default router

    (3)在全局配置文件main.js中加载路由配置文件

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. //加载路由配置文件
    4. import router from "@/router";
    5. Vue.config.productionTip = false
    6. new Vue({
    7. router,
    8. render: h => h(App),
    9. }).$mount('#app')

    (4)使用:表示修改URL会更改其中的内容

    (5)通过js控制路由跳转

    ​    可以在当前项目任意页面中通过this.$router调用路由对象。

    ​    通过下面代码可以实现路由跳转

    this.$router.push(“/first”)

    六、发送网络请求

    (1)安装依赖

    cnpm install --save axios

    (2)在全局配置文件main.js中配置

    import axios from "axios";
    import qs from "querystring";

    Vue.prototype.$axios=axios;
    Vue.prototype.$qstring=qs;

    (3)在根目录下新建vue.config.js,配置请求代理

    1. module.exports = {
    2. devServer: {
    3. proxy: {
    4. // 当请求Vue项目路径以/api开头时转发给下面
    5. '/': {
    6. // 服务器端URL
    7. target: 'http://192.168.141.241:8081/',
    8. ws: true,
    9. pathRewrite: {
    10. // 把路径中api去掉
    11. '^/': '/'
    12. }
    13. }
    14. }
    15. }
    16. }

    (4)使用

    1. methods: {
    2. mypost:function () {
    3. this.$axios.post("/demo",this.$qstring.stringify({id:5,name:"李四"}))
    4. //成功后
    5. .then(resp=>{
    6. this.myname=resp.data.name;
    7. this.myage=resp.data.id;
    8. })
    9. //失败后
    10. .catch(err=>{
    11. console.log(err);
    12. })
    13. }
    14. }

     七、Vue Element

    Vue Element 就是Vue的扩展插件。

    网址:https://element.eleme.cn/#/zh-CN

    (1)安装命令

    cnpm install --save element-ui

    (2)在全局配置文件main.js中引入依赖

    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';

    Vue.use(ElementUI);

  • 相关阅读:
    Unity脚本生命周期 Day02
    深入理解Java消息中间件-ActiveMQ
    Spring之@Column的注解详解
    mysql bin_log日志恢复数据
    react的useState源码分析
    【转存】Linux环境RabbitMq搭建部署
    Pandas数据分析15——pandas数据透视表和交叉表
    VisualAssist 10.9.2 Crack-2022-09-15
    MySQL学习(四)
    git 回退过程记录
  • 原文地址:https://blog.csdn.net/weixin_53455615/article/details/127670424