首页 > 其他分享 >Vue - 7 Vue-cli项目

Vue - 7 Vue-cli项目

时间:2023-02-20 21:36:12浏览次数:35  
标签:npm vue cli 项目 导出 导入 js Vue 组件

Vue - 7 Vue-cli项目

目录

1.Vue - cli创建项目

前端进行组件化开发,创建Vue项目,单页面应用spa,在xx.Vue文件中编写前端页面,而vue-cli则可以进行编译

  • 创建vue项目使用什么?
vue2 使用vue-cil
vue3 即可以使用vue-cil,也可以用vite

(1)下载和安装

1.用cnpm替换npm

用npm下载 vue/cli,但是连接的是github比较慢,所以可以用cnpm下载,cnpm是淘宝出的vue工具,下载的时候使用的是淘宝的镜像,速度比较快

# 使用原npm下载 -g 表示安装在全局中
npm install -g @vue/cli 

  • 用cnpm替换npm
npm install -g cnpm --registry=https://registry.npm.taobao.org

2.cnpm安装vue-cil

安装npm和cnpm后就可以在终端中输入命令,安装vue包或者创建vue项目

cnpm install -g @vue/cli

(2)使用vue-cil 创建项目

1.新建目录

2.使用终端vue-cil创建项目

由于从github拉一个空项目,并安装该项目所有的依赖包,所以使用npm装速度较慢可以ctrl+c停止

vue create myfirstvue   

之后进入命令行选择,开始配置新的vue项目

image-20230220100420010

image-20230220100645023

image-20230220100728711

image-20230220100842193

image-20230220102250634

3.使用vue提供的vue ui图形化界面创建项目

在浏览器中打开vue项目,使用vue ui进行项目创建

image-20230220171521527

(3)启动vue项目

方式1:在命令行中切换到新项目的路径,然后执行如下命令

npm run serve

方式2:在webstrom中打开新项目,然后

image-20230220171113293

2.vue的开发规范

2.1 vue文件

vue文件中的标签作用

以后开发vue项目,都按照
1.新建xx.vue
2.在xx.vue中就三块内容
 # 1 组件的html内容,都写成这里
<template></template>
 # 2 style样式,组件的样式都写在这里
<style></style>
 # 3 js相关代码都写在js中
<script></script>

2.2 vue目录项目介绍

myfirstvue         # vue项目名
├── README.md      # 用户手册
├── node_modules   
# 内容:其中包含了非常多的第三方模块,以后把项目复制给别人是【上传git要忽略掉】,这个文件夹需要删掉。其中包含了很多小文件,包括【项目的依赖】
# 如果没有这个文件夹,只需要执行 cnpm install,根据package.json的依赖包进行安装即可
├── babel.config.js  # babel的配置文件
├── jsconfig.json    # 配置文件
│ 
├── package-lock.json # 锁定文件
├── package.json      # 安装了第三方模块后会自动增加
├── public            # 文件夹
│   ├── favicon.ico   # 网站小图标
│   └── index.html    # spa 单页面应用,以后整个vue项目都是用这一个html页面来写
├── src       # 进行组件化开发的文件夹
│   ├── App.vue     # 根组件文件,通过new Vue生成的实例管理的div标签,以后原来写在div中的东西现在都写在App.vue中
│   ├── assets      # 静态资源文件,前端需要用到的js、css文件等都放在这个文件夹下
│   │   └── logo.png
│   ├── components  # 局部组件文件夹,用于编写组局组件文件
│   │   └── HelloWorld.vue
│   ├── main.js     # 项目的启动入口,找到index.html中id为app的div,然后将app.vue 中的东西替换到id=app的div中
│   ├── router      # 在创建vue项目的时候选择了Router时,则会出现,用于配置前端的路由
│   │   └── index.js
│   ├── store      # 在创建vue项目的时,选择了Vuex则会出现,
│   │   └── index.js
│   └── views      # 全局组件文件夹
│       ├── AboutView.vue
│       └── HomeView.vue
└── vue.config.js  # vue的配置文件,相当于django中的settings.py文件

3.es6的导入导出语法

注意:

  • 导入的前提是-->导出对象,才能导入使用

  • 没有导出的对象,相当于隐藏对象

  • vue组件开发三板斧:template、style、script

image-20230220190121582
  • main.js是项目的启动入口,找到public文件夹下面的index.html中id为app的div,然后将app.vue 中的东西替换到id=app的div中
image-20230220191434822

3.1 默认导入导出

(1)导出语法

默认导出只能导出一次,一般导出一个对象

export default 对象

(2)导入语法

import 别名 from '路径'

之后别名就是导出的对象

案例

test.vue - 导出

①在局部组件<template></template>标签中编写页面

②通过export default导出组件对象,默认导出只导出一个对象

<template>
  <div id="test">
  <h2>{{word}}</h2>
  </div>
</template>

<script>

// 默认导出,以对象的形式导出,在别的页面中想用到该组件中的东西,前提是这个页面中的东西已经导出了
export default {
  name: "test",
  data(){
    return {
      word:'这里是test组件',
    }
  },
}
</script>

AboutView.vue

①通过import导入局部组件

②在components中注册组件

③在template标签中写上组件标签

<template>
  <div class="about">

    <h1>This is an about page</h1>

    <hr>
    <test></test>
    <hr>

  </div>
</template>

<script>
// 默认导入
import test from '@/components/test.vue'
export default {
  components: {
    // components配置项中注册
    test
  }
}
</script>

3.2 命名导入导出

(1)命名导出

通过export关键字 + const ,可以导出可以导出多个对象

export const age = 123

export const addNum = (a, b) => {
    return a + b
}

(2)命名导入

需要用括号括起来,通过import导入

import {js变量, js-function} from '路径'

案例

test.js - 定义变量和函数

①新建js文件,在js文件中定义变量和函数

②通过export关键字导出变量和函数,没有导出的对象则隐藏起来

export const age = 123

export const addNum = (a, b) => {
    return a + b
}

main.js - 命名导入对象

①通过括号,命名导入对象

②通过别名,则可以在文件中使用导入的对象

import {age,addNum} from './js/test'

console.log(age)
console.log(addNum(100,150))

3.3 导入的简写形式

例如

包下的 index.js导入的时候,不用写到index的路径

如同python中包中的 __init__.py文件,导入的时候只用导入到文件夹级别,不用写明到__init__.py

image-20230220202143237
import js from './js'

3.4 vue项目编写步骤

① 只需要写xx.vue,

  • 页面组件
  • 局部组件:给页面组件用的

② 在组件中导出

	export default {
          name: 'HelloWorld',
          data() {
            return {
              xx: '彭于晏'
            }
          },
	}

③ 在别的组件中使用,导入并注册

import HelloWorld from '../components/HelloWorld.vue'

export default {
      components: {
        HelloWorld 
      }
    }

④ 注册以后,在这个组件中就可以使用导入的组件,写在template标签中

<HelloWorld msg="传进来的数据"/>

4.小联系 - 登录功能

4.1 App.vue

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

4.2 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')

4.3 在根组件中注册

HomeView.vue中,1.导入登录组件页面,并注册登录组件 2.在template中使用<LoginView></LoginView>标签

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
<!--    <HelloWorld msg="Welcome to Your Vue.js App"/>-->
    <LoginView></LoginView>
  </div>
</template>

<script>
import LoginView from "@/components/LoginView";

export default {
  name: 'HomeView',
  components: {
    // HelloWorld
    LoginView
  }
}
</script>

4.4 LoginView.vue - 使用axios发送ajax请求

①②③④

① 使用npm安装axios

-S 会自动把当前依赖加入到package.json

npm install axios -S 

② 在LoginView.vue中导入axios

import axios from 'axios'

③ 编写登录页面,使用axios发送ajax请求给后端

给登录按钮绑定点击事件,触发axios方法发送ajax请求

<template>
  <div class="login">
    <h2>登录页面</h2>
    <div>用户名:<input type="text" v-model="username"></div>
    <div>密码:<input type="password" v-model="password"></div>
    <button @click="handleClick">登录</button>
  </div>
</template>

<script>
import axios from 'axios'
export default {
  name: "LoginView",
  data() {
    return {
      username: '',
      password: '',
    }
  },
  methods: {
    handleClick() {
      console.log(this.username)
      console.log(this.password)
      axios.post('http://127.0.0.1:9000/user/login/', {username: this.username, password: this.password}).then(
          res => {
            console.log(res)
          }
      )
    },
  },
}
</script>

4.5 解决跨域

通过安装第三方模块django-cors-headers解决跨域问题

1 安装模块
	pip3 install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple/

2 注册app
	'corsheaders'
3 中间件修改
	'corsheaders.middleware.CorsMiddleware',
4 修改配置文件
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
	'DELETE',
	'GET',
	'OPTIONS',
	'PATCH',
	'POST',
	'PUT',
	'VIEW',
)

CORS_ALLOW_HEADERS = (
	'XMLHttpRequest',
	'X_FILENAME',
	'accept-encoding',
	'authorization',
	'content-type',
	'dnt',
	'origin',
	'user-agent',
	'x-csrftoken',
	'x-requested-with',
	'Pragma',
	'token'
)

5.scoped属性 - 限定CSS样式在组件的作用域

scoped 是一个 Vue 组件选项,它允许你将 CSS 样式限定在组件的作用域内。这意味着在一个组件中定义的样式只会应用于该组件中的元素,而不会影响到其他组件或全局样式。

父组件的样式,在子组件中会生效,加入scoped让该样式只在当前组件中生效

<style scoped>
h1 {
  background-color: red;
}
</style>

6.MacOS安装npm包权限问题

1、异常信息:

Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/cnpm'

2、解决办法:
2.1、第一步:修改目录权限,执行如下命令

sudo chown -R $USER /usr/local/lib/node_modules

2.2、第二步:增加sudo命令,再次执行npm安装命令如下:

我这里是安装淘宝镜像命令,大家可以根据自己需要安装的包替换即可

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

补充

配置项

- el(template)
- data:组件中要写成方法
- methods:方法
- 8个生命周期钩子函数
- components:组件
- watch:监听属性
- computed:计算属性

文件防篡改

1 把文件生成md5值

2 以后被下载下来,再生成md5值是一样的,如果不一样说明被篡改了,不可以使用了

后端与前端

1 前端运行在浏览器上,后端运行在操作系统之上

2 后端主要就是操作数据库,监听网络端口,进行操作

解释型语言和编译型语言

1 解释型语言:js、node、PHP、python、运行在解释器之上

pyinstaller...

2 编译型语言:c、go、c++

直接把源代码编译成不同平台(window、macos、Linux)的可执行文件,但是不支持跨平台。。。

  • java:一处编码处处运行

    java虚拟机,虚拟机跨平台,java字节码运行在虚拟机之上,java写了代码编译成字节

标签:npm,vue,cli,项目,导出,导入,js,Vue,组件
From: https://www.cnblogs.com/DuoDuosg/p/17138973.html

相关文章

  • springBoot项目遇到的BUG:Process finished with exit code -1
     问题原因:在service层调用dao层的时候没有给接口注入值 解决方法:加上@Autowired ......
  • vue_day06 vue-cli基本使用了解
    目录今日内容详细一、vue-cli创建项目二、vue项目目录介绍三、es6导入导出语法1.App.vue,main.js,About.vue写了什么2.导入导出语法3.vue项目编写步骤四、小练习-登录功能1.A......
  • Vue-cli
    Vue-clivue-cli创建项目1.下载node解释器在node官网中下载node解释器,安装时一直下一步就行2.验证node下载完是自动添加环境变量的,可以在cmd中输入node来验证......
  • vue-cli项目01
    今日内容vue-cli创建项目#下载node解释器 -路径:http://nodejs.cn/#使用cnpm来代替npm --g表示装全局-指令:npminstall-gcnpm--registr......
  • Vue学习随笔(一)Vue的引入
    前言以往零零散散使用过一些Vue的语法,最近才刚刚系统接触Vue,现在是刚刚入门的状态,故在这里做一个记录和梳理,欢迎大家一起学习交流,有错误的地方也欢迎大家指正。正篇梦开......
  • Vue 3 兄弟组件间传值 | mitt.js
    Vue3中兄弟间传值可以使用Vuex,但小项目使用过于庞大,我们可以使用mitt进行兄弟组件间传值。操作步骤第一步:安装mittnpmimitt第二步:创建文件(例如:eventBus.js)impo......
  • Maptalk-Three-Vue简单示例
    Maptalk-Three-Vue简单示例​ 通过国产GIS前端框架付镇大神的[Maptalks](maptalks/maptalks.js:AlightandplugableJavaScriptlibraryforintegrated2D/3Dmaps.......
  • vuecli创建项目-vue项目目录介绍-es6导入导出语法-小练习登录功能-scoped
    目录vuecli创建项目-vue项目目录介绍-es6导入导出语法-小练习登录功能-scoped今日内容概要今日内容详细1vue-ci创建项目2vue项目目录介绍3es6导入导出语法3.1App.vue,m......
  • c语言程序填空项目
    1.头文件引用2变量的定义和初始化 3常用库函数的使用 4运算符和表达式的使用5实现顺序结构程序设计6用if语句switch语句实现分支结构的程序设计 7用whil......
  • 项目开发软件架构选择指南
    从系统的组织和部署结构方面来看,软件架构的演化进程显然有着从简单到复杂的趋势。那是否最新最复杂的架构就是目前业界选择的最佳架构呢?非也。没有最好的架构,只有最合适的......