zoukankan      html  css  js  c++  java
  • vue-cli使用和组件

    vue之同源策略

    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(&quot;script&quot;);
        var content = document.getElementById(&quot;content&quot;);
        // 给script标签设置src属性为服务端的js脚本
        script.src = &quot;https://api.asilu.com/fanyi/?callback=hello&amp;q=&quot;+content.value;
        console.log(script);
        // 把新建的script标签追加到网页给浏览器识别
        //通过将处理好的script标签交给document的head处理,让浏览器识别
        document.head.append(script);
    }
    
    &lt;/script&gt;
    

    </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>
    
    &lt;body&gt;
        &lt;div id=&quot;app&quot;&gt;
        
        &lt;/div&gt;
    &lt;/body&gt;
    

    <script>
    //创建一个普通组件
    //template的模板中内容必须有div标签包含
    Vue("mycomponent",{
    template: &lt;div&gt; &lt;button @click=&quot;add&quot;&gt;+&lt;/button&gt; &lt;input type=&quot;text&quot; v-model=&quot;num&quot;/&gt; &lt;button @click=&quot;substract&quot;&gt;-&lt;/button&gt; &lt;/div&gt;,
    data(){
    return{} //组件中使用的数据,组件之间的数据是隔离的相互独立
    },
    methods:{
    add(){
    num++;
    },
    substract(){
    num--;
    }
    }
    });

    var vm = new Vue({
        el:&quot;#app&quot;,
        
    });
    &lt;/script&gt;
    

    </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:	ool
    vm    [这里的目录地址是安装nvm时自己设置的地址,要根据实际修改]
    path: C:	ool
    odejs
    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”

  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/g15009428458/p/12312539.html
Copyright © 2011-2022 走看看