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项目创建

1) 进入存放项目的目录
>: cd ***

2) 创建项目
>: vue create 项目名

3) 项目初始化

4.选择手动创建项目

babel:将es6的语法解析成成es5语法(我们主要用es5)

TypeScript,如果用原生JS写可以不选

Progressive Web App Support 网站的提高搜索的优化措施,项目优化

Router路由,需要安装

Vuex全局单例,用于组件之间的传参,可以安装,存值特点当浏览器刷新时重置所有的数据,主要用于移动端组件的传参

css pre-processors CSS预编译,less和sass语法的项目需要使用,并且需要安装对应的编译器

Linter / Formatter格式化代码,对代码的格式进行规范。可选但是如果书写不规范会报错。

按空格选中,enter下一步

5.选择好后enter

6.此步骤选择Y

7.上图选项只有选择格式化管理后才会出现,选择好后enter

8.enter

9.enter

注意:如果每次项目需求不同,最好不要选择Y,一旦选择Y,以后更改比较麻烦。

重构项目依赖

1.需要转移的文件

如果我们需要将项目转到其他的配置环境下我们需要,除node_modules下面所有的文件都拷走,也可只拷贝下面三个文件,一定不要拷node_modules,该文件夹里面有上万个文件,拷贝和上传的速度会特别的慢。

2.重构依赖

重新构建依赖(node_modules)时上面三个文件夹是一定要有的。

cd到项目对应的文件夹执行cnmp install加载依赖即可,如遇到报错,哪里报错就现将package文件内报错部分的代码删掉,这样就可以使项目正常加载,我们平常在GitHub中下的项目如果跑不起来可能也是配置文件的问题。

步骤:

  1. 将需要转移的文件放在一个空文件夹中
  2. 在cmd中cd到目标文件夹然后直接执行命令:cnmp install
  3. 启动项目:cnpm run serve

如果对项目进行迁移后,安装依赖出现报错如下,

找到对应的路由进行修改如下

pycharm配置并启动vue项目

1.用pycharm打开vue项目

2.添加配置npm启动

3.配置npm启动

4.安装解析.vue文件需要的插件,搜"vue"点击install,然后点击重启软件选项

点击apply再OK,软件会自动重启并安装插件

vue项目目录结构分析

├── v-proj
|   ├── node_modules    // 当前项目所有依赖,一般不可以移植给其他电脑环境
|   ├── public          
|   |   ├── favicon.ico // 标签图标
|   |   └── index.html  // 当前项目唯一的页面
|   ├── src
|   |   ├── assets      // 静态资源img、css、js
|   |   ├── components  // 小组件
|   |   ├── views       // 页面组件
|   |   ├── App.vue     // 根组件
|   |   ├── main.js     // 全局脚本文件(项目的入口)
|   |   ├── router
|   |   |   └── index.js// 路由脚本文件(配置路由 url链接 与 页面组件的映射关系)
|   |   └── store   
|   |   |   └── index.js// 仓库脚本文件(vuex插件的配置文件,数据仓库)
|   ├── README.md
└   └── package.json等配置文件

vue组件(.vue文件)

# 1) template:有且只有一个根标签,负责组件的html结构
# 2) script:必须将组件对象导出 export default {}
# 3) style: style标签明确scoped属性,代表该样式只在组件内部起作用(样式的组件化)
# 4) export default{组件内容}组件内容是该组件的逻辑处理部分
<template>
    <div class="test">
        
    </div>
</template>

<script>
    export default {
        name: "Test"
    }
</script>

<style scoped>

</style>

全局脚本文件main.js(项目入口)

下面两种写法是相通的,只不过第二种是我们之前常用的。之前我们定义子组件和根组件都在同一个文件内,不涉及文件的导入,但是在项目里都是分文件的,需要先对其进行文件的导入

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
//文件的导入,import 文件名 from '路径',文件名是代称,可以和真实文件名不同
Vue.config.productionTip = false

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')
改写
import Vue from 'vue'  // 加载vue环境
import App from './App.vue'  // 加载根组件
import router from './router'  // 加载路由环境
import store from './store'  // 加载数据仓库环境

Vue.config.productionTip = false
new Vue({
    el: '#app',
    router,
    store,
    render: function (readFn) {
        return readFn(App);
    },
});

完整的main.js

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 适配IE浏览器 -->
    <meta name="viewport" content="width=device-width,initial-scale=1.0"><!-- 适配移动端 -->
    <link rel="icon" href="<%= BASE_URL %>favicon.ico"><!-- 在根路径下找logo图片(favicon.ico) -->
    <title>v-proj</title>
</head>
<body>
    <noscript>
        当浏览器不支持JS的时候报的错误
    </noscript>
<div id="app"></div><!-- 根组件有自己的模板 -->
</body>
</html>
<!-- 整个项目只有这一个页面 -->

vue请求生命周期

  1. 启动项目,加载主脚本main.js,加载Vue环境,创建根组件完成渲染,加载系统已有的第三方环境:router、store,加载自定义的第三方环境与自己配置的环境。
  2. router被加载就会解析router文件夹下的index.js脚本文件,完成路由-组件的关系映射。
  3. 新建视图组件.vue(在views文件夹中),在路由中配置(在router的index.js中),设置路由跳转(在导航栏组件中) ''' 浏览器请求/user => router插件映射User.vue组件 => User.vue组件替换App.vue中的<router-view />占位符 注: i) 可以用 <router-link to="/user">用户页</router-link>完成标签跳转 ii) this.$router.push('/user')完成逻辑跳转 '''

vue组件的生命周期钩子

生命周期钩子是一个组件从创建到销毁的众多时间节点的回调的方法,这些方法都是vue组件实例的成员,生命周期钩子的作用就是满足在不同时间节点需要完成的事。

来看下面的代码:

     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组件销毁成功了')
        }

关于路由

1.路由配置

我们需要配置path,name和component(注册组件)

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import Course from '../views/Course'
import CourseDetail from '../views/CourseDetail'

Vue.use(VueRouter);

const routes = [
    {
        path: '/',//此处相当于url,当访问的路径后缀是/时就访问home页面
        name: 'home',//这里的name相当于反向解析时起的别名
        component: Home
    },
    {
        path: '/home',//当访问的路径后缀是/home时就重定向到/对应的页面
        redirect: '/',  // 路由的重定向
    },
    {
        path: '/course',
        name: 'course',  //name的使用:<router-link :to="{name: 'course'}">课程页</router-link>
        component: Course
    },
    {
        // 第一种路由传参
        // path: '/course/detail',

        // 第二种路由传参
        path: '/course/:pk/detail',
        //:pk有名分组,这样pk就能接收到对应的值
        name: 'course-detail',
        component: CourseDetail
    }
];

2.路由跳转

this.$router.push('/')//控制路由跳转到括号内的路径,
//如果已经在该路径再次向这个路径跳转就会报错

this.$route.path //获取当前的路径(是后缀不是全路径)

$router.go(-1)

require('@/assets/img/001.jpg'),  // 前台逻辑中加载静态资源采用require,这里就获取到了图片的全路径,@就是是src
    
redirect: '路径',  // 路由的重定向
    
this.$router.go(2);  // go是历史记录前进后退,正为前进,负为后退,数字为前进后退的步数
<router-link to="/">主页</router-link>
<!-- 封装之后的a标签 -->
<!-- 这里使用到了反向解析,:to="要跳转的路径" -->

3.路由传参

方式一

    <!--第一种路由传参/course/detail?pk=1的形式-->
    <router-link :to="`/course/detail?pk=${course.id}`">{{ course.title }}</router-link>
                    <!--使用to属性绑定到子路由,这里用常量代替变量-->
    <router-link :to="{
        name: 'course-detail',
        query: {pk: course.id}
    }">{{ course.title }}
    </router-link>

方式二

<!--第二种路由传参/course/1/detail的形式-->
<router-link :to="`/course/${course.id}/detail`">{{ course.title }}</router-link>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初识Django之前端后端与数据库的配置

    在Django中需要自己手动创建静态文件存放的文件夹。 在创建好文件夹后需要在settings文件内进行如下配置:

    GH
  • Flask(三)之请求上下文源码分析

    run_simple是werkzeug内部的方法,在run_simple执行时会将app加括号调用从而执行app的__call__方法,来看__call__源码...

    GH
  • vue3之组件

    概念:html、css、js的集合体,为该集合体命名,用该名字复用html、css与js组成的集合体(复用性)。

    GH
  • 剑指Offer_Java_顺时针打印矩阵(二维数组)

    简单来说,就是不断地收缩矩阵的边界 定义四个变量代表范围,up(初始0)、down(初始-行高)、left(初始-0)、right(初始-列宽), 向右...

    CherishTheYouth
  • 2020腾讯犀牛鸟精英人才培养计划课题介绍(七)——自然语言处理研究

    ? 精英人才培养计划是一项校企联合人才培养项目,入选学生将受到业界顶尖技术团队与高校导师的联合指导及培养。培养期间,学生将获得3个月以上到访腾讯开展科研访问的...

    腾讯高校合作
  • 美国军方开发Android终端攻击工具 智能手机或将遥控空袭

    美国军方开发Android终端攻击工具 智能手机或将遥控空袭 美国军方正在开发一种应用程序,旨在利用智能手机召唤轰炸机实施空袭。美国...

    安恒信息
  • Vue + Webpack 将路由文件分拆为多个文件分别管理简明教程

    近日,有网友留言,询问,如何将 vue 的路由分拆为多个文件进行管理。这当然是可以的。今天我就来写一个简单的教程,希望对大家有所帮助。

    FungLeo
  • 17.12.28日报

    1,终于找到https://m.baidu.com/sf/vsearch?pd=image_content&word=%E7%94%B5%E5%AD%90%E7...

    龙泉寺扫地僧
  • 敲重点!一文详解解决对抗性样本问题的新方法——L2正则化法

    【导读】许多研究已经证明深度神经网络容易受到对抗性样本现象(adversarial example phenomenon)的影响:到目前为止测试的所有模型都可以...

    用户1737318
  • 还怕不记得Spring Boot注解吗?5类注解全在这里了(建议收藏)

    Spring Boot的核心就是注解。Spring Boot通过各种组合注解,极大地简化了Spring项目的搭建和开发。在Spring Boot中有一些注解是...

    程序员追风

扫码关注云+社区

领取腾讯云代金券