vue-cli使用和组件

vue之同源策略

vue请求方式(axios)

axios.get('资源服务器',{
          params:{   //get参数   如https://www.badu.comid=(参数)
                id:参数
          }
          }).then(function(response){   //response是请求成功后返回的数据
        console.log(response)      
          }).catch(function(error){    //error是请求失败后的返回数据
        console.log(error)  //无法显示服务端的错误,只会接收服务端的错误
          })

同源策略报错

Access to XMLHttpRequest at 'http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=%E6%88%91%E7%9A%84%E4%B8%AD%E5%9B%BD%E5%BF%83' from origin 'http://localhost:63342' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

关键词:Access-Control-Allow-Origin

只要出现这个错误,就是访问受限。出现策略的拦截问题

同源策略报错解决方式

同源策略:是浏览器的一种保护用户数据的一种安全机制,浏览器会限制ajax不能跨域访问其他源的数据地址。

同源:判断两个同心地址之间,是否协议,域名[ip],端口一致

同源策略报错原因也是协议,域名和端口有其一不一致的问题

解决方式

ajax跨域(跨源)方案之CORS

CORS是一个W3C标准,全称是"跨域资源共享",他允许浏览器向跨源的后端服务器发出ajax请求,从而克服ajax只能同源使用的限制

实现CORS主要依靠后端服务器中相应数据中在响应头信息返回信息的

CORS在django中的使用

#django视图

def post(request):
    response = new HttpResponse()
    response.set_header("Access-Control-Allow-Origin","http://localhost:63342")
    return response;
//在响应行信息里面设置一下内容:
Access-Control-Allow-Origin:ajax所在的域名地址

Access-Control-Allow-Origin:www.oldboy.cn  #

vue中设置

待更新

jsonp

利用跨域标签来解决的

jsonp可以实现跨域,但是并非ajax技术

核心是利用script标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <input type="text" id="content">
        <button onclick="get_data()">翻译</button>
        <p id="p1"></p>
    </div>
    <script>
    // jsonp本身并不是ajax
    // jsonp利用的是script标签的本身特性
    // 实现json需要客户端和服务端配合
    function hello(data){
        // 自定义业务
        //当点击之后,发送请求服务器,js会自动调用这个函数(函数名必须和请求连接中的callback参数一致,传入的参数就是请求响应的参数)
        var p1 = document.getElementById("p1");
        p1.innerHTML = data.data;
        console.log(data);
    }

    function get_data(){
        // 通过js的DOM操作创建一个script标签
        var script = document.createElement("script");
        var content = document.getElementById("content");
        // 给script标签设置src属性为服务端的js脚本
        script.src = "https://api.asilu.com/fanyi/?callback=hello&q="+content.value;
        console.log(script);
        // 把新建的script标签追加到网页给浏览器识别
        //通过将处理好的script标签交给document的head处理,让浏览器识别
        document.head.append(script);
    }

    </script>
</body>
</html>

服务端代理

普通组件

组件有两种全局组件和单文件组件

普通组件与通常vue相同,都是可以拥有data和methods,以下是写法

<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>普通组件</title>   <!--网页名称--->
        <script src="js/vue.js"></script>
    </head>
    <style>
        button{
            background-color:red  
        }
    </style>
    
    <body>
        <div id="app">
        
        </div>
    </body>
<script>
    //创建一个普通组件
    //template的模板中内容必须有div标签包含
    Vue("mycomponent",{
        template:`
<div>
    <button @click="add">+</button>
<input type="text" v-model="num"/>
<button @click="substract">-</button>
    </div>`,
        data(){
            return{}  //组件中使用的数据,组件之间的数据是隔离的相互独立
        },
        methods:{
            add(){
                num++;
            },
            substract(){
                num--;
            }
        }
    });
    
    var vm = new Vue({
        el:"#app",
        
    });
    </script>

</html>

单文件组件

单文件组件的代码,是需要保存到vue文件中

例如,我们希望创建一个单文件组件,则需要创建一个vue组建的代码。浏览器默认不识别vue文件。所以需要vue-cli这个工具

vue-cli如何搭建项目

vue-cli官网:https://cli.vuejs.org/zh/

在安装vue-cli之前需要安装node.js

Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+)。你可以使用 nvmnvm-windows在同一台电脑中管理多个 Node 版本。

nvm工具的下载和安装: https://www.jianshu.com/p/d0e0935b150a

https://www.jianshu.com/p/622ad36ee020

安装记录:

打开:https://github.com/coreybutler/nvm-windows/releases

安装完成以后,先查看环境变量是否设置好了.

nvm

可以使用nvm下载node和node的npm

如果使用nvm工具,则直接可以不用动手下载,如果使用下载安装的npm比较慢,可以修改nvm的配置文件

# settings.txt
root: C:\tool\nvm    [这里的目录地址是安装nvm时自己设置的地址,要根据实际修改]
path: C:\tool\nodejs
arch: 64
proxy: none
node_mirror: http://npm.taobao.org/mirrors/node/ 
npm_mirror: https://npm.taobao.org/mirrors/npm/

常用命令

nvm list  #列出目前在nvm里面安装的所有node版本
nvm install node版本号   #安装指定版本的node.js
nvm uninstall node版本号  #卸载指定版本的node.js
nvm use node版本号    #切换当前使用的node.js

安装好node.js

使用命令查看 node -v

npm

在安装node.js之后,同时node.js会同时帮我们那幢一个npm包管理器npm,我们可以借助npm命令安装node.js的包,这个相当于python的pip管理包

npm install -g 包名              # 安装模块   -g表示全局安装,如果没有-g,则表示在当前项目安装
npm list                        # 查看当前目录下已安装的node包
npm view 包名 engines            # 查看包所依赖的Node的版本 
npm outdated                    # 检查包是否已经过时,命令会列出所有已过时的包
npm update 包名                  # 更新node包
npm uninstall 包名               # 卸载node包
npm 命令 -h                      # 查看指定命令的帮助文档

配置npm下载源

//临时使用
nom install jquery --registry https://registry.npm.taobao .org

//配置这个选型到文件中
npm config set registry hhttps://registry.npm.taobao.org

//验证是否配置成功
npm config list或者npm cofig get registry

安装vue-cli

npm install  -g vue-cli

使用vue-cli初始化创建项目

在保存项目文件夹下

创建项目命令  vue init webpack 项目目录名

创建项目过程

? Project name project
? Project description 一个很牛逼的网站
? Author oldboy
? Vue build (Use arrow keys)
❯ Runtime + Compiler: recommended for most users 
? Install vue-router? (Y/n) n 
? Set up unit tests? (Y/n) n  # 是否安装单元测试组建
? Setup e2e tests with Nightwatch? (Y/n)n
? Should we run `npm install` for you after the project has been created? (recom
mended) npm

创建项目后,在项目目录下

执行 npm run dev   执行虚拟服务器

单文件组件使用

组件有两种:普通组件、单文件组件

普通组件的缺点:

  1. html代码是作为js的字符串进行编写,所以组装和开发的时候不易理解,而且没有高亮效果。
  2. 普通组件用在小项目非常合适,但是复杂的大项目中,如果把更多的组件组件放在html中,那么维护成本就变得非常昂贵。
  3. 普通组件只是整合了js和html,但是css代码被剥离出去了。使用的时候不好处理

将一个组件相关的html结构,css样式,以及交互的JavaScript代码从HTML文件中剥离出来,合成一个文件,这种文件就是单文件组件,相当于一个组件具有了结构、表现和行为的完整功能,方便组件之间随意组合的复用,这种文件的扩展名为“.vue”

猜你喜欢

转载自www.cnblogs.com/g15009428458/p/12312539.html