第四篇:Vue的项目开发

安装Vue的脚手架cli环境

1)官网下载并安装node,附带npm
https://nodejs.org/zh-cn/
node环境:
可以解释执行js语言
提供了npm应用商城,可以为node环境安装其他插件
提供了socket,可以提供npm命令来启动socket

2)换源:将npm欢迎为cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

3)安装vue脚手架

cnpm install -g @vue/cli

注:如果第二三步异常,基本都是由网络导致的,可以重新执行第二三步,如果一直有问题,可以清理缓存后重复

npm cache clean --force

创建项目

在终端中创建项目

# cmd

cd Desktop  # 前往目标路径
vue create v-proj  # 创建项目名为v-proj

选择自定义安装:

Manually select features

分别勾选以下插件:

Babel:将ES6语法解析为ES5语法给浏览器
Router:前台路由
Vuex:前台仓库,相当于单例,完成个组件间传参的

之后都是大Y走下去,注意,如果有洁癖,最后一步询问是否保存配置,选择N

项目移植

1)拷贝出环境 node_modules 以外的文件与文件夹到目标文件夹
2)终端进入目标文件夹所在位置
3)执行:npm install 重新构建依赖(npm可以用cnpm替换)

Pycharm配置并启动vue项目

1) 用pycharm打开vue项目
2) 添加配置npm启动

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组件

1)一个.vue文件就是一个组件
2)组件都是由三部分组成:html结构、js逻辑、css样式
html结构都是在template标签中,页面结构有且只有一个根标签(template一级结构下)
js逻辑都是在script标签中,必须设置导出,export default {...}
css样式都是在style标签中,必须设置scoped属性,是样式组件化

注:pycharm安装vue.js插件,就可以高亮显示vue文件了

<template>
    <div class="first-cp">
         <h1>第一个组件</h1>
    </div>
</template>

<script>
    // .vue文件类似于模块,可以直接相互导入,所以在组件内部要设置导出
    export default {

    }
</script>

<style scoped>
    /* scoped可以使样式组件化,只在自己内部起作用 */

</style>

全局脚本文件main.js

1)main.js是项目的入口文件
2)new Vue()就是创建根组件,用render读取一个.vue文件,$mount渲染替换index.html中的占位
3)项目所依赖的环境,比如:vue环境、路由环境、仓库环境、第三方环境、自定义环境都是在main.js中完成

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')
 

改写为下面的这样,其实,上面的就是由下面格式演变而来:

比如说下面vue中的el选择器同等于上面的.$mount(‘#app‘),选中的是index.html中的app。

上面是单个router其实就是下面的router: router简写的。(js中如果属性名和变量名相等可以简写)

上面的箭头函数等同于下面的function函数。

一般我们是将App.vue替换index.html中的占位,但可以自己定义,例如下面的替换成了FirstCP.vue

一般情况下,此文件我们不需要做出改动,保持默认即可,使用上面默认即可,不需要进行下面的修改,下面的修改只是为了更好地理解上面的代码。

import Vue from 'vue'  // 加载vue环境
import App from './App.vue'  // 加载根组件
import router from './router'  // 加载路由环境
import store from './store'  // 加载数据仓库环境

Vue.config.productionTip = false;  // tip小提示

import FirstCP from './views/FirstCP'
new Vue({
    el: '#app',
    router: router,
    store: store,
    render: function (readVueFn) {
        return readVueFn(FirstCP);  // 读取FirstCP.vue替换index.html中的占位
    }
});

Vue的根组件

1)App.vue是项目的根组件,是唯一由main.js加载渲染的组件,就是替换index.html页面中的<div id="app"></div>的占位标签

2)实际开发中App.vue文件中,只需要书写下方五行代码即可(可以额外增加其他代码)

3)router-view是一个占位标签,由router插件控制,可以在router的配置文件中进行配置

4)router-view就是根据router在index.js中配置的路由关系被 指定路径 匹配 指定页面组件 渲染

5)router-view或被不同的页面组件替换,就形成了页面跳转

<template>
    <div id="app">
        <!-- 前台路由占位标签,末尾的/代表单标签的结束 -->
        <router-view />  <!--此处会被vue组件替换并渲染,具体被谁替换,由router控制-->
    </div>
</template>

<style>
    body {
        margin: 0;
    }
</style>

Vue的路由配置router

router目录下的index.js是Vue的路由系统,他控制着Vue的根组件中的<router-view />具体被哪个组件替换并渲染

路由配置:

1)当用户在浏览器中访问的路由是/,router插件就会加载 Home.vue文件,同理 /about 就是 About.vue文件
2)将加载的 Home.vue文件 或者 About.vue文件,去替换App.vue文件中的<router-view />占位符
3)用redirect配置来实现路由的重定向

import Vue from 'vue'
import VueRouter from 'vue-router'

// import 别名 from '文件'
import Home from '../views/Home'
import About from '../views/About'
import First from '../views/FirstCP'

Vue.use(VueRouter);

// 路由配置
// 1)当用户在浏览器中访问的路由是 / ,router插件就会加载 Home.vue文件,同理 /about 就是 About.vue文件
// 2)将加载的 Home.vue文件 或者 About.vue文件,去替换App.vue文件中的 <router-view />占位符
// 3)用redirect配置来实现路由的重定向
const routes = [
    {
        path: '/',
        name: 'Home',  // 类似反向解析的名字,可以利用属性指令在前台使用 :to='{name: 路由名}'  eg:<router-link :to="{name: 'First'}">第一页</router-link>
        component: Home  // 注册组件
    },
    {
        path: '/home',
        redirect: '/',  // 路由的重定向
    },
    {
        path: '/about',
        name: 'About',
        component: About
    },
    {
        path: '/first',
        name: 'First',
        component: First
    }
];

const router = new VueRouter({
    mode: 'history',  // 此处控制是否开启历史功能,可以返回上一个页面
    base: process.env.BASE_URL,
    routes
});

export default router

Vue中components目录下的小组件

此目录下写的小组件,主要用于被组件使用,例如页面的导航栏可能好几个页面都需要一样的导航栏,那么就可以直接将小的组件拿过去使用;

其实Vue的组件本质上也是很多小组件渲染而成的,例如下面的components目录下的Nav.vue被引用到组件中的例子:

子组件代码示例:

<template>
    <div class="nav">
        <img src="" />
        <ul>
            <li>
                <!-- router控制的路由,不是用a标签完成跳转:
                    1)a标签会刷新页面,错误的
                    2)router-link标签也能完成跳转,且不会刷新页面,就是router提供的a标签(最终会被解析为a标签,还是用a来控制样式)
                    3)router-link标签的to属性控制跳转路径,由两种方式
                        i) to="路径字符串"
                        ii :to="{name: '路由名'}"
                -->
                <a href="/">主页</a>
            </li>
            <li>
                <router-link to="/about">关于页</router-link>
            </li>
            <li>
                <!-- to="字符串",v-bind:to="变量",可以简写为 :to="变量" -->
                <router-link :to="{name: 'First'}">第一页</router-link>
            </li>
        </ul>
    </div>
</template>

<style scoped>
    .nav {
        width: 100%;
        height: 80px;
        background: rgba(0, 0, 0, 0.3);
    }
    img {
        width: 200px;
        height: 80px;
        background: tan;
        float: left;
    }
    ul {
        float: left;
        list-style: none;
        margin: 0;
        padding: 0;
        height: 80px;
        background: pink;
    }
    ul li {
        float: left;
        height: 80px;
        padding: 30px 20px 0;
    }
    a {
        color: black;
    }
</style>

父组件代码示例:

<template>
    <div class="home">
        <!-- vue项目下的html是支持大小写,且区分大小写 -->
        <Nav />
    </div>
</template>

<script>
    // 父组件加载子组件:父组件通常是页面组件,是被一个个小组件这些子组件组装成的页面
    // 1)导入语法要在 export default{} 之上完成
    // 2)@符合标识 项目src文件夹 绝对路径
    // 3)要在export default{} 的括号中用 components 注册
    // 4)在该组件的模板中就可以渲染子组件了(html代码中是区别大小写的)
    import Nav from '@/components/Nav'

    export default {
        components: {
            Nav,
        }
    }
</script>

<style scoped>
    .home {
        width: 100vw;
        height: 100vh;
        background-color: orange;
    }
</style>

原文地址:https://www.cnblogs.com/cnhyk/p/12306296.html

时间: 2024-10-07 12:13:58

第四篇:Vue的项目开发的相关文章

Vue.之.项目开发工具选用

Vue.之.项目开发工具选用 上篇文章记录了创建项目,这篇文件记录,如何对创建的项目进行开发.这里选择一个工具:Visual Studio Code (请自行下载安装) 1. 打开VSCode工具,并加载项目: File -> Open Folder (然后选择之前创建的项目:ntrc-app) 2. 通过VSCode打开终端: View -> Debug Console  3. 输入指令,再次运行项目: cnpm run dev (如果之前在cmd黑窗口启动的项目没有关闭的话,这个应用端口是

实例成员:计算属性 监听属性以及vue的项目开发

6)字符串补充 双引号: "前缀" + 变量 + "后缀" 单引号: '前缀' + 变量 + '后缀' 反引号: `前缀$(变量)后缀` ps:在反引号中可以用$()来包裹变量,实现字符串的拼接 7)实例成员:计算属性 监听属性 计算属性: ? 1)计算属性其实就是vue中的方法属性,方法名可以作为属性来使用,属性值就是方法的返回值 ? 2) 在computed中声明的方法属性,不能在data中重复声明,比data中声明的属性要多出些逻辑的的地方 ? 3)方法属性自

Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例

<<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识.包含SWT控件的使用.界面布局.事件处理等内容:第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包含行为(Action).视图(ViewPart).编辑器(Editor).透视图(Perspective)等10章的内容.第三篇主要讲述插件开发的高级内容,包含开发高级内容.富client平台技术(R

vue前端项目开发环境搭建并用npm方式运行

1.下载node.js http://nodejs.cn/download/ 推荐下载 .mis安装包,下一步下一步... 安装完后,通过cmd控制台输入node -v 弹出版本号即成功 2.通过node.js中内置的npm(包/依赖)插件来下载其他开发所需的环境 注意:如设置了代理限制,可通过cmd控制台输入npm config set proxy=http://代理服务器地址:8080 设置代理(网络有代理限制时下载不到依赖包时,按需设置) npm config delete proxy 为

vue中小型项目开发浅谈

组件的本质 组件的本质就是一个可以交互的视图模板 controller去哪了 在react中存在展示组件与容器组件,其中展示组件展示单纯的展示,而容器组件里面则是react与redux沟通的桥梁,而redux是包含业务逻辑的地方,所以controller存在于react的容器组件中,但是在vue中没有容器组件的概念,然而我们可以编写出一个容器组件,用于存在其他展示组件,这通常是一个页面或者是页面里的某个模块 是否需要model层 对于中小型项目,大部分业务逻辑都已经被node中间层给处理了,前端

第三十二篇、直播项目开发

1.直播app分类:主要分为两大类 >秀场直播 如:映客 花椒 >游戏直播 如:斗鱼 2.iOS主要实现的技术 >播放:播放远程服务器收集到的视频 >录播:主播通过手机直播,客户端需要将直播实时视频传输给服务器,以边其它手机客户端播放 >即时通讯:观众和主播互动的礼物,聊天及时呈现   >弹幕 >整体界面的搭建和展示 3.技术分析 数据-->解协议-->封装格式数据-->解封装-->音频压缩数据-->音频解码-->音频的原始数据

基于Redux的ReactNative项目开发总结(一)

写在前面 上周把基于Redux的单页应用开发完 紧接着就开始了ReactNative的开发.真的快得不可思议,只花了一周时间,我们两个人就分工把APP也开发完了,并且同时兼容IOS操作系统和Android操作系统.内部测试了一轮,流畅性和用户体验方面也都相当给力! 接下去几篇依次介绍项目开发中领悟的技巧和遇到的坑. 项目架构 和React开发的单页应用不同,ReactNative开发不需要依赖webpack,facebook已经提供的一套基于NodeJS的转换和运行工具,这里不多做介绍.项目的架

Android开源项目第四篇——开发及测试工具篇

本文为那些不错的Android开源项目第四篇——开发工具篇,主要介绍Android开发工具和测试工具相关的开源项目. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 1.Buck facebook开源的Android编译工具,效率是ant的两倍.主要优点在于

第十四篇 Integration Services:项目转换

本篇文章是Integration Services系列的第十四篇,详细内容请参考原文. 简介在前一篇,我们查看了SSIS变量,变量配置和表达式管理动态值.在这一篇,我们使用SQL Server数据商业智能工具(SSDT-BI)或Visual Studio 2012将我们的第一个SSIS项目转换为SSIS 2012.为什么你想升级我们的SSIS项目到2012?你可能想使用SSIS 2012中的新特性.你可能还希望利用SSIS 2012目录.要使用目录,你的项目必须遵循项目部署模型,我们也将在这篇文