zoukankan      html  css  js  c++  java
  • vue项目搭建

    Vue项目环境搭建

    node ~~ python:node是用c++编写用来运行js代码的
    npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内源cnpm
    vue ~~ django:vue是用来搭建vue前端项目的

    1) 安装node
    官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/

    2) 换源安装cnpm
    >: npm install -g cnpm --registry=https://registry.npm.taobao.org

    3) 安装vue项目脚手架
    >: cnpm install -g @vue/cli

    注:2或3终端安装失败时,可以清空 npm缓存 再重复执行失败的步骤
    npm cache clean --force

    代码创建项目

    vue creat 项目名
    // 要提前进入目标目录(项目应该创建在哪个目录下)
    // 选择自定义方式创建项目,选取Router, Vuex插件

    可视化创建项目

     cmd中写vue ui

     

     

     

     

     pycharm 管理vue项目

     项目目录介绍

    项目生命周期

    * 1、启动项目,加载主脚本文件 main.js
    * 加载Vue环境,创建根组件完成渲染
    * 加载系统已有的第三方环境:router、store
    * 加载自定义的第三方环境与自己配置的环境:后期项目不断添加
    *
    * 2、router被加载,就会解析router文件夹下的index.js脚本文件,完成 路由-组件 的映射关系
    *
    * 3、新建视图组件.vue(在views文件夹中),在路由中配置(在router的index.js中),设置路由跳转(在导航栏组件中Nav.vue)

     

     

    vue请求生命周期:
    浏览器请求/user => router插件映射User.vue组件 => User.vue组件替换App.vue中的<router-view />占位符
    注: i) 可以用 <router-link to="/user">用户页</router-link>完成标签跳转
    ii) this.$router.push('/user')完成逻辑跳转

    文件式组件

    views组件里面用components里面的小组件,要先注册

    <!--
    template标签负责组件的html结构:有且只有一个根标签
    -->
    <template>
        <div class="home">
            <Nav />
            <h1>主页</h1>
        </div>
    </template>
    
    <!--
    script标签负责组件的js逻辑:逻辑固定导出 export default {组件内容}
    (外界才可以导入)
    -->
    <script>
        import Nav from '../components/Nav'
    
        export default {
            data(){
                return {
                    back_data: ''
                }
            },
            methods: {},
            components: {
                Nav,
            },
        }
    </script>
    
    <!--
    style标签负责组件的css样式:scoped保证样式的组件化 - 样式只在该组件内部起作用
    -->
    <style scoped>
    </style>

    配置自定义全局样式

    在src文件下的assets下面的css文件中写全局的css样式

    再到main.js里面配置,才会起作用(加载写的css文件,有文件后缀)

    配置全局样式:@就代表src文件夹的绝对路径(可以用..来查找路径),官方提倡require加载静态文件

     

    路由跳转逻辑

     路由重定向

     生命周期钩子

    表示一个vue实例从创建到销毁的这个过程,将这个过程的一些时间节点赋予了对应的钩子函数

    钩子函数: 满足特点条件被回调的方法

    生命周期钩子
    1)一个组件从创建到销毁的众多时间节点回调的方法
    2)这些方法都是vue组件实例的成员
    3)生命周期钩子的作用就是满足在不同时间节点需要完成的事
    <script>
        import Nav from '../components/Nav'
    
        export default {
            data(){
                return {
                    back_data: ''
                }
            },
            methods: {},
            components: {
                Nav,
            },
            /**  生命周期钩子
             * 1)一个组件从创建到销毁的众多时间节点回调的方法
             * 2)这些方法都是vue组件实例的成员
             * 3)生命周期钩子的作用就是满足在不同时间节点需要完成的事
             */
            beforeCreate() {
                console.log('Home组件要创建了');
                console.log(this.back_data);
            },
            created() { // 重要方法:在该钩子中完成后台数据的请求
                console.log('Home组件创建成功了');
                console.log(this.back_data);
            },
            beforeMount() {
                console.log('Home组件准备加载')
            },
            mounted() {  // 特别耗时的数据请求,可以延后到组件初步加载成功后,再慢慢请求
                console.log('Home组件加载完成')
            },
            destroyed() {
                console.log('Home组件销毁成功了')
            }
        }
    </script>

     前台静态资源加载

    路由传参方式

    方式一:

    先在index中配路由  path: '/course/detail'

    传 `/course/detail?pk=${pk}`  this.pk = this.$route.query.pk

    方式一:

    先在index中配路由  path: '/course/:pk/detail'

    传  `/course/${pk}/detail` 收  this.$route.params.pk

    传:

    <template>
        <div class="course-tag">
            <!--点击图片 逻辑跳转(事件)-->
            <img :src="course.img" alt="" @click="goDetail(course.id)">
    
            <!--第一种路由传 -->
            <!--点击文字跳转方法一-->
            <router-link :to="`/course/detail?pk=${course.id}`">{{ course.title }}</router-link>
    
            <!--点击文字跳转方法二-->
            <router-link :to="{
                name: 'course-detail',
                query: {pk: course.id}
            }">{{ course.title }}
            </router-link>
    
            <!--第二种路由传参-->
             <!--点击 标签跳转-->
            <router-link :to="`/course/${course.id}/detail`">{{ course.title }}</router-link>
    
    
        </div>
    </template>
    
    <script>
        export default {
            name: "CourseTag",
            props: ['course'],
            methods: {
                goDetail(pk) {
                    //路由传参方法一
                    this.$router.push(`/course/detail?pk=${pk}`);
                    //路由传参方法二
                    this.$router.push(`/course/${pk}/detail`);
                    
                    this.$router.push({
                        name: 'course-detail',
                        query: {pk: pk}
                    });
                }
            }
        }
    </script>
    
    <style scoped>
        .course-tag {
            width: 200px;
            border-radius: 10px;
            overflow: hidden;
            background-color: #eee;
            float: left;
            margin: 10px;
        }
    
        .course-tag img {
            width: 100%;
            height: 240px;
        }
    
        .course-tag a {
            text-align: center;
            font-weight: normal;
            font-size: 20px;
            display: block;
        }
    </style>

    收:

    <template>
        <div class="course-detail">
            <!--不写this.$router,在标签直接写,在逻辑中要加this-->
            <button @click="$router.go(-1)">返回课程主页</button>
            <hr>
            <h1>第{{ pk }}个课程的详情</h1>
        </div>
    </template>
    
    <script>
        export default {
            name: "CourseDetail",
            data() {
                return {
                    pk: 0
                }
            },
            created() {
                // 获取路由传递的参数:课程的id
                // console.log(this.$route);
                // console.log(this.$route.query.pk);
                this.pk = this.$route.query.pk || this.$route.params.pk;
            }
        }
    </script>
    
    <style scoped>
    
    </style>
  • 相关阅读:
    记录未完成
    java8时间有关新特性
    《java多线程编程核心技术》----simpleDateFormat非线程安全
    基于JavaScript的表格设计:按序添加或删除班级的学生信息
    BOOK
    Android攻城狮Dialog
    Android攻城狮重新认识Toast
    Android攻城狮使用LogCat方式调试程序
    Android攻城狮属性动画赏析
    Android攻城狮布局动画
  • 原文地址:https://www.cnblogs.com/fjn839199790/p/12070023.html
Copyright © 2011-2022 走看看