飞道的博客

Vue项目开发介绍

363人阅读  评论(0)

Vue项目目录介绍

 node_modules:内部有很多当前项目依赖的模块

 public:存放页面图标和不支持 JavaScript 情况时的页面

         favicon.ico网站小图标

         index.htmlspa单页面应用

 src:存放 vue 项目的源代码

         assets:静态资源,js、css,图片

         components:小组件,用在别的页面大组件中

         HelloWorld.vue:默认了一个hello world组件

         router:装了vue-router自动生成的,如果不装就没有

                - index.js:vue-router的配置

         store:装了vuex自动生成的,如果不装就没有

                - index.js :vuex的配置

         views:放了一堆组件,页面组件

                - AboutView.vue:关于 页面组件

                - HomeView.vue:主页 页面组件

         App.vue:根组件

         main.js:整个项目启动入口

 .gitignore:git的忽略文件

 babel.config.js:babel的配置文件

 package.json:存放项目的依赖配置(比如vuex,element-UI)

 package-lock.json:锁定文件package.json中写了依赖的版本,这个文件锁定所有版本

 README.md:项目的介绍文件

 vue.config.js:vue项目的配置文件

Vue项目开发规范


   
  1. <template>html内容写在里面 </template>
  2. <script>写js内容 </script>
  3. <style> 写css样式<style>

1.把App.vue根组件导入

2.使用new Vue({render: h => h(App)}).$mount('#app') 把App.vue组件中得数据和模板,插入到了index.html的id为app  div中了

3.以后,只要在每个组件的export default{}写之前学过的所有js的东西

4.以后,只要在每个组件的template,写模版,插值语法,指定等

5.以后,只要在每个组件等style,写样式

es6导入导出语法

 默认导出与导入

- 默认导出:关键字export defalut


   
  1. export defalut {
  2. name: 'abc',
  3. printName () {
  4. console. log( this. name)
  5. }
  6. }

- 命名导入:要起一个名字

import 命名 from '路径'

 命名导出与导入

- 写一个js,在js中定义变量,函数,最后使用export导出


   
  1. export conse name = 'abc'
  2. export const printname = ( ) => {
  3. console. log( 'cba')
  4. }

- 在想使用的js中导入

import {printname} from '路径'

ps:可以在包下面建立index.js的文件,以后导入的时候就会默认找它,类似python中的__init__.py。

Vue项目集成axios

 第一步:安装axios

cnpm install axios --S

 第二步:导入使用

import axios from 'axios'

 第三步:利用axios向后端获取数据


   
  1. axios. get( 'http://127.0.0.1:800/user/'). then( res => {
  2. console. log(res. data)
  3. this. userList=res. data
  4. })

 第四步:需要解决跨域问题(django)

- 安装:pip3 install django-cors-headers

- app中注册:


   
  1. INSTALLED_APPS = (
  2. 'corsheaders',
  3. )

- 中间件注册:


   
  1. MIDDLEWARE = [
  2. 'corsheaders.middleware.CorsMiddleware',
  3. ]

- 在配置文件中加下面代码:


   
  1. CORS_ORIGIN_ALLOW_ALL = True
  2. CORS_ALLOW_METHODS = (
  3. 'DELETE',
  4. 'GET',
  5. 'OPTIONS',
  6. 'PATCH',
  7. 'POST',
  8. 'PUT',
  9. 'VIEW',
  10. )
  11. CORS_ALLOW_HEADERS = (
  12. 'XMLHttpRequest',
  13. 'X_FILENAME',
  14. 'accept-encoding',
  15. 'authorization',
  16. 'content-type',
  17. 'dnt',
  18. 'origin',
  19. 'user-agent',
  20. 'x-csrftoken',
  21. 'x-requested-with',
  22. 'Pragma',
  23. )

props配置项

props的作用是用来接收父组件中传过来的数据

子组件使用props配置项进行属性的接收的形式有三种:


   
  1. // 1.普通用法只接收数据
  2. props:[ 'name']
  3. // 2.接受数据的属性认证
  4. props:{
  5. name: String
  6. }
  7. // 3.限制类型、必要性、指定默认值
  8. props:{
  9. name:{
  10. type: String, // 类型
  11. required: true, // 必要性
  12. default: '隔壁老王', // 默认值
  13. }
  14. }

混入与插件、scoped样式

 混入用法

混入提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项,当组件使用混入对象时所有混入对象的选项将被混合进入该组件本身的选项


   
  1. // 定义一个混入
  2. export const hunru = {
  3. data( ) {
  4. return {
  5. name: 'abc'
  6. }
  7. },
  8. methods:{
  9. handlePrintName( ) {
  10. alert( this. name)
  11. }
  12. },
  13. }

- 在局部组件中使用


   
  1. import {hunru} from "@/mixin";
  2. mixins:[hunru,]

- 全局使用,在main.js中导入以后所有组件都可以用


   
  1. import {hunru} from "@/mixin";
  2. Vue. mixin(hunru)

 插件的使用

插件通常用来Vue添加全局功能,用来增强Vue。插件的本质包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据


   
  1. import Vue from "vue";
  2. import axios from "axios";
  3. import {hunru} from '@/mixin'
  4. export default {
  5. install( miVue) {
  6. // console.log(miVue)
  7. // 1 vue 实例上放个变量
  8. Vue. prototype. $name = 'abc' // 类比python,在类上放了一个属性,所有对象都能取到
  9. Vue. prototype. $ajax = axios
  10. // 2 使用插件,加入混入
  11. // 全局使用混入
  12. Vue. mixin(hunru)
  13. // 3 定义全局组件
  14. // 4 定义自定义指令 v-lqz
  15. Vue. directive( "fbind", {
  16. //指令与元素成功绑定时(一上来)
  17. bind( element, binding) {
  18. element. value = binding. value;
  19. },
  20. //指令所在元素被插入页面时
  21. inserted( element, binding) {
  22. element. focus();
  23. },
  24. //指令所在的模板被重新解析时
  25. update( element, binding) {
  26. element. value = binding. value;
  27. },
  28. });
  29. }
  30. }

- 在main.js中使用插件,以后在组件中可以直接用插件中写的东西


   
  1. import plugins from '@/plugins'
  2. Vue. use(plugins) // 本质:使用use会自动触发插件对象中得install

 scoped样式

scoped可以达到类组件私有化,在styple上写以后只针对与当前组件生效

<style scoped> </style>

localStorage和sessionStorage

当我们需要在浏览器中存储数据的时候就需要用到localStorage、sessionStorage和cookie三种形式存储每一种方式的功能都不一样

 localStorage:永久存储,浏览器关闭也依然存在


   
  1. <template>
  2. <div id="app">
  3. <h1>localStorage操作 </h1>
  4. <button @click="saveStorage">点我向localStorage放数据 </button>
  5. <button @click="getStorage">点我获取localStorage数据 </button>
  6. <button @click="removeStorage">点我删除localStorage放数据 </button>
  7. <script>
  8. export default {
  9. name: 'App',
  10. data( ) {
  11. return {}
  12. },
  13. methods: {
  14. saveStorage( ) {
  15. var person = {
  16. cook: 100,
  17. msg: '完美'
  18. }
  19. localStorage. setItem( 'userinfo', JSON. stringify(person))
  20. },
  21. getStorage( ) {
  22. let userinfo = localStorage. getItem( 'userinfo')
  23. console. log(userinfo)
  24. console. log( typeof userinfo)
  25. },
  26. removeStorage( ) {
  27. // localStorage.clear()
  28. localStorage. removeItem( 'userinfo')
  29. },
  30. </script>

 sessionStorage:临时存储,关闭页面数据就没有了


   
  1. <template>
  2. <div id="app">
  3. <h1>sessionStorage操作 </h1>
  4. <button @click="saveSessionStorage">点我向localStorage放数据 </button>
  5. <button @click="getSessionStorage">点我获取localStorage数据 </button>
  6. <button @click="removeSessionStorage">点我删除localStorage放数据 </button>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. name: 'App',
  12. data( ) {
  13. return {}
  14. },
  15. methods: {
  16. saveSessionStorage( ) {
  17. var person = {
  18. name: 'abc',
  19. age: 18
  20. }
  21. sessionStorage. setItem( 'userinfo', JSON. stringify(person))
  22. },
  23. getSessionStorage( ) {
  24. let userinfo = sessionStorage. getItem( 'userinfo')
  25. console. log(userinfo)
  26. console. log( typeof userinfo)
  27. },
  28. removeSessionStorage( ) {
  29. // localStorage.clear()
  30. sessionStorage. removeItem( 'userinfo')
  31. },
  32. </script>

 cookie:设置时间,到期就过期


   
  1. <template>
  2. <div id="app">
  3. <h1>cookie操作 </h1>
  4. <button @click="saveCookie">点我向localStorage放数据 </button>
  5. <button @click="getCookie">点我获取localStorage数据 </button>
  6. <button @click="removeCookie">点我删除localStorage放数据 </button>
  7. </div>
  8. </template>
  9. <script>
  10. import cookies from 'vue-cookies'
  11. export default {
  12. name: 'App',
  13. data( ) {
  14. return {}
  15. },
  16. methods: {
  17. saveCookie( ) {
  18. cookies. set( 'name', 'abc', '7d') // d:按照天数计时
  19. },
  20. getCookie( ) {
  21. console. log(cookies. get( 'name'))
  22. },
  23. removeCookie( ) {
  24. cookies. remove( 'name')
  25. }
  26. </script>

集成elementui

 常用的第三方样式库

        - iview

        - 移动端Ui:vant

        - 饿了么团队:elementui

 elementui使用步骤

        - 安装:npm i element-ui -S

        - 引入样式


   
  1. <!-- 引入样式 -->
  2. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  3. <!-- 引入组件库 -->
  4. <script src="https://unpkg.com/element-ui/lib/index.js"> </script>

        - 通过npm安装的则需要在main.js中写上下面代码


   
  1. import Vue from 'vue';
  2. import ElementUI from 'element-ui';
  3. import 'element-ui/lib/theme-chalk/index.css';
  4. import App from './App.vue';
  5. Vue. use( ElementUI);
  6. new Vue({
  7. el: '#app',
  8. render: h => h( App)
  9. });


转载:https://blog.csdn.net/weixin_52596593/article/details/127618561
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场