精华内容
下载资源
问答
  • express中的app.use用法 在Express框架中,有一 加载第方模块插件 加载路由 1. 加载静态区域 1. 使用拦截器

    express中的app.use的用法

    在Express框架中,有一个app.use() 这个方法在经常使用,好么,它到底有什么作用呢

    加载第三方模块插件

    //配post请求
    const bodyParser = require(“body-parser”); //导入了第三方插件
    //加载了第三方插件模块
    app.use(bodyParser.urlencoded({ extended: false, limit: “30mb” }));
    app.use(bodyParser.json({ limit: “30mb” }))

    加载路由

    1.app.use("/stuInfo",require("./routes/StuInfoRouter.js"));

    加载静态区域

    1.app.use("/public", express.static(path.join(__dirname, “./public”)));

    使用拦截器

    在所有请求之前(也就是所有路由之前去拦截)

    app.use((req,resp,next)=>{
    //所有经过路由的请求就会先到达这里被拦下来,如果想放行,直接调用next()
    });

    配合 express-async-errors处理全局异常

    const express  = require("express");
    require("express-async-errors");
    

    //后面这段代码一定要写在路由后面
    //服务器报错以后500

    app.use((error, req, resp, next) => {
        if (req.xhr) {
            resp.json({ status: "fail", msg: "服务器错误" });
        }
        else {
            console.log(error);
            //只有报错才会进这里
            resp.render("status/500");
        }
    });
    

    关于Ajax的一些补充

    get请求

    get请求的页面代码

    function getData() {
        // new ActiveXObject("Micorsoft.XMLHTTP");
        var xhr = new XMLHttpRequest();
        xhr.open("get", "/getAjax1?userName=biaogege", true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200 || xhr.status == 304) {
                    console.log(xhr.responseText);
                }
            }
        }
        xhr.send();
    }
    

    get请求的后台代码

    app.get("/getAjax1", (req, resp) => {
        console.log(req.query);
        resp.json({ status: "success", msg: "请求成功" });
    });
    

    post请求

    post请求的页面代码

    function getData() {
        var userName = "biaogege";
        var xhr = new XMLHttpRequest();
        xhr.open("post", "/postAjax2", true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200 || xhr.status == 304) {
                    console.log(xhr.responseText);
                }
            }
        }
        // 如果post要发送值,一定要在send里面
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xhr.send("userName=biaogege");
    }
    

    后台代码

    //配post请求  后台请求一定要配置
    const bodyParser = require("body-parser");
    app.use(bodyParser.urlencoded({ extended: false, limit: "30mb" }));
    app.use(bodyParser.json({ limit: "30mb" }));
    
    
    app.post("/postAjax2", (req, resp) => {
        console.log(req.body);
        resp.json({ status: "success", msg: "请求成功" });
    });
    

    这个时候我们可以明显的发现,post表求有Ajax代码有很多不一样

    1. 它在请求之前一定要设置一个请求头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    2.它的数据是通过 xhr.send("userName=biaogege");,不像get那样,直接拼在了url地址的后面

    重要:

    关于post请求,因为是可以设置RequestHeader 这个东西的,所以在传递数据的时候,我们可以不使用拼接的方式,直接传递一个JSON字符串过去,只要后台做了解析的就可以了

    后台的配置

    //配post请求  后台请求一定要配置
    const bodyParser = require("body-parser");
    
    //这一行代码是解析application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({ extended: false, limit: "30mb" }));
    
    //这一行代码就是解析application/json
    app.use(bodyParser.json({ limit: "30mb" }));
    

    页面上面的请求方式

    function getData() {
        var obj = {
            userName: "张三",
            age: 17,
            sex: "男"
        }
        var xhr = new XMLHttpRequest();
        xhr.open("post", "/postAjax3", true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200 || xhr.status == 304) {
                    console.log(xhr.responseText);
                }
            }
        }
        // 如果post要发送值,一定要在send里面
        // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.send(JSON.stringify(obj));
    }
    

    在上面的代码过程当中, 我们在向后台直接 xhr.send(JSON.stringify(obj)); 发送了一个JSON字符串,并且我们把请求头设置为了xhr.setRequestHeader(“Content-Type”, “application/json”); 后台服务器只要是做了相关的配置,就可以直接把这个POST过去的JSON字符串转换成一个对象

    Ajax的跨域

    Ajax的请求默认情况下是不可以跨域的
    什么是域?什么是跨域?

    域指的是origin,跨域指的源地址的域与请求目标地址域不相同,这样就叫域

    如下所示

    源地址:http://127.0.0.1:5500/ajax1.html
    目标地址:http://192.168.9.254:81/getAjax1?userName=biaogege

    这样源地址的域是http://127.0.0.1:5500,而目标地址的域是http://192.168.9.254:81。两个地址的域不相同,这样就叫跨域

    而Ajax默认是不允许跨域的(受同源策略的影响,这是浏览器的限制,浏览器不允许不同的域之间交互数据),如果发生跨域请求,则会报错误

    Aajx如果想实列跨域获取数据,则一定要后台开始`CORS

    跨域资源共享CORS

    CORS:corss origin resource share,它是在服务端设置的

    resp.setHeader(“Access-Control-Allow-Origin”,"*");
    resp.setHeader(“Access-Control-Allow-Methods”,“GET,POST,PUT,DELETE,OPTIONS”);
    resp.setHeader(“Access-Control-Allow-Headers”,“Content-Type”);

    解决跨域除了上面的方式以外,还有另外的几种方式列举一下

    1. CORS跨域资源共享
    2. jsonp
    3. nginx反向代理
    展开全文
  • php 下use用法

    千次阅读 2017-01-15 21:26:38
    php use()方法 PHP命名空间支持种别名方式(或者说引用): 1、为一类取别名 2、为一接口取别名 3、为一命名空间取别名 这种方式都是用 use 关键字来完成

    php use()方法

    PHP命名空间支持三种别名方式(或者说引用):
    1、为一个类取别名
    2、为一个接口取别名
    3、为一个命名空间取别名 这三种方式都是用 use 关键字来完成

    展开全文
  • Rust 1.7.0 中的宏使用范围包括种情况:第一种情况是宏定义在当前文件中,这文件可能是 crate 默认的 module,也可能是任意的 module 模块。第二种情况是宏定义在当前 crate ,但是不是在当前文件中,而是其他 ...

    Rust 1.7.0 中的宏使用范围包括三种情况:

    第一种情况是宏定义在当前文件中,这个文件可能是 crate 默认的 module,也可能是任意的 module 模块。

    第二种情况是宏定义在当前 crate ,但是不是在当前文件中,而是其他 module 模块中。

    第三种情况是宏定义在其他的 crate 中,或者其他的 crate 子模块中。

    使用#[macro_use] 可以使被注解的module模块中的宏应用到当前作用域中;或者注释crate中的宏应用到当前crate作用域中。

    第一种情况的例子:

    macro_rules! say_hello{

    ()=>(

    println!("Hello");

    )

    }

    fn main(){

    say_hello!();

    }

    第二种情况:

    先创建一个新文件 macros.rs ,定义一个宏 say_bonjour

    macro_rules! say_bonjour{

    ()=>(

    println!("Bonjour");

    )

    }

    使用

    #[macro_use]

    pub mod macros;

    macro_rules! say_hello{

    ()=>(

    println!("Hello");

    )

    }

    fn main(){

    say_hello!();

    say_bonjour!();

    }

    如果没有 #[macro_use] 编译会出现

    error: macro undefined: ‘say_bonjour!’

    第三种情况:注释在外部 crate 的语句

    创建 log 项目 cargo new log

    在 log 项目中,lib.rs 是入口,在lib.rs中定义 macors 模块。

    ...#[macro_use] mod macros; . . .

    然后,创建对应mod macros 的 macros.rs 文件 vi src/macros.rs

    声明宏 log、error、warn、info,在每个宏定义前面添加 #[macro_export]注释,表示这些宏可以被外部的 crate 使用。

    .

    .

    .

    #[macro_export]

    macro_rules! log {

    ...

    }

    #[macro_export]

    macro_rules! error {

    (target: $target:expr, $($arg:tt)*) => (

    log!(target: $target, $crate::LogLevel::Error, $($arg)*);

    );

    ($($arg:tt)*) => (

    log!($crate::LogLevel::Error, $($arg)*);

    )

    }

    #[macro_export]

    macro_rules! warn {

    (target: $target:expr, $($arg:tt)*) => (

    log!(target: $target, $crate::LogLevel::Warn, $($arg)*);

    );

    ($($arg:tt)*) => (

    log!($crate::LogLevel::Warn, $($arg)*);

    )

    }

    #[macro_export]

    macro_rules! info {

    (target: $target:expr, $($arg:tt)*) => (

    log!(target: $target, $crate::LogLevel::Info, $($arg)*);

    );

    ($($arg:tt)*) => (

    log!($crate::LogLevel::Info, $($arg)*);

    )

    }

    .

    .

    .

    使用:引入 log crate的时候,注明#[macro_use]

    #[macro_use]

    extern crate log;

    .

    .

    .

    if !shutdown.load(Ordering::SeqCst) {

    info!("ConnectionHandler: read timed out ({:?}). Server not shutdown, so \ retrying read.",

    err);

    continue;

    } else {

    info!("ConnectionHandler: read timed out ({:?}). Server shutdown, so \ closing connection.",

    err);

    break;

    }

    .

    .

    .

    展开全文
  • 1.命名空间 2.匿名函数 3.多继承 4.暂时想到这三个,如果有请补充在评论区 转载于:https://www.cnblogs.com/datang6777/p/7111683.html

    1.命名空间

    2.匿名函数

    3.多继承

    4.暂时想到这三个,如果有请补充在评论区

    转载于:https://www.cnblogs.com/datang6777/p/7111683.html

    展开全文
  • 第一种情况是宏定义在当前文件中,这文件可能是 crate 默认的 module,也可能是任意的 module 模块。 第二种情况是宏定义在当前 crate ,但是不是在当前文件中,而是其他 module 模块中。 第种情况是宏定义在...
  • use关键字在PHP中的几种用法在学习了和使用了这么多年的PHP之后,您知道use关键字在PHP中都有哪些用法吗?今天我们就来看一下它的种常见用法。1. 用于命名空间的别名引用//...
  • php中namespace和use用法

    千次阅读 2016-06-28 10:55:15
     第一:可以更好的...命名空间不能嵌套或在同一代码处声明多次(只有最后一次会被识别),但是,你能在同一文件中定义多命名空间的代码,比较合适的做法是每一文件定义一命名空间(可以是相同命名空间)。
  • TP5 namespace 和 use用法

    千次阅读 2017-04-14 17:11:35
    PHP 命名空间可以解决以下两类问题:用户编写的代码与PHP内部的类/函数/常量或第方类/...为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一别名(或简短)的名称,提高源代码的可读性。 参考来源:...
  • PHP 5.3中的namespace其实是不错的东西,可以简化编程,下面介绍类在代码中访问namespace中类的方法1 引用namespace和类 假设namespace的程序为namespaced-class.phpnamespace Christmas\DaysOf;class ...
  • 在robot framework中 和屏幕截图有关的共有三个关键字,分别是: 1)Name:Set Screenshot Directory Source:Screenshot Arguments:[ path ] Sets the directory where screenshots are saved.  It is possible to ...
  • “Python猫” ,一值得加星标的公众号 剧照 | 《犬夜叉》 原标题 |Three Ways to Use the Walrus Operator in Python作 者 |Jonathan Hsu翻 译 |人气呆毛选手来 源|AI 开发者随着Python 3.8的发布,赋值表达式...
  • 发现把这三个table PO_AGENTS PA, PER_PEOPLE_F PAPF,HR_LOCATIONS_ALL_TL HL 串起来后语句执行的像蜗牛一样慢啊,用户每次跑个报表是都会抱怨说在挑选参数时太慢。不得不优化语句啊。后来想用用oralce 的优化器...
  • 原标题 |Three Ways to Use the Walrus Operator in Python作 者 |Jonathan Hsu翻 译 |人气呆毛选手审 校 | 鸢尾、唐里注:敬请点击文末【阅读原文】访问文中相关链接,PC查看体验更佳。随着Python 3.8的发布,...
  • laypage 的使用非常简单,指向一用于存放分页的容器,通过服务端得到一些初始值,即可完成分页渲染。核心方法:laypage.render(options)来设置基础参数。 一、laypage的常用基础参数 layui.use(['laypage'], ...
  • 1、态门指逻辑门电路的输出不仅有高电平、低电平,还有高阻态 ...它通常由多个三态门组成, 3、双向总线缓冲器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity bidr_io1 is ...
  • 绝不要用一关键字命名表或者列.USE关键字,不显示任何结果,依赖于使用的客户机显示某种形式的通知;记住必须使用USE打开数据库,才能读取其中的数据。四.show databases 返回可用数据可的一列表;为了获得...
  • PHP闭包函数用法

    2021-01-25 17:49:47
    PHP闭包函数用法一、闭包二、闭包使用1,匿名函数2,作为回调函数,附加状态1).注意PHP闭包不会真的像JS一样自动封装应用的状态,在PHP中必须调用闭包对象的bindTo方法或者使用use关键字,把状态附加到PHP闭包上。2...
  • php namespace和use的使用

    2020-11-25 10:38:01
    用过CMS的同学都知道,很多CMS都会采用面向对象编程的思想,会遇到很多namespace和use,今天来简单介绍一下php中命名空间和use的使用 namespace和use ...三个文件都在同一个目录下 # class_test1.php <?ph
  • 要想说一口流利而准确的英语,掌握定冠词 “the” 的使用方法非常重要...下面我们学习一下关于 “the” 的三个实用知识点。 Three facts about 'the' 1 We use“the”when referring to a specific thing and both y...
  • mysql的用法

    2019-07-04 11:04:00
    .USE关键字,不显示任何结果,依赖于使用的客户机显示某种形式的通知;记住必须使用USE打开数据库,才能读取其中的数据。 四.show databases 返回可用数据可的一列表; 为了获得数据库内的表的列表,使用show ...
  • MySQl高级用法实战一、创建一电商数据表1)创建数据库数据表2)插入数据3)练习各类sql 语句4)拆开这张表 创建一电商数据库 一、创建一电商数据表 1)创建数据库数据表 create database shop charset=utf8; ...
  • 三个文件,分别是space1.php,space2.php,use.php吧,在同一目录里。 space1.php: <?php namespace MyNamespace\Factory; class Employees{ private $name; function __construct($nameStr){ $this->name...
  • (这里有小错误是删除test_01库) 2.对于一张表的修改 <1> 重命名一张表 重命名表语句有种形式,效果是一样的: RENAME TABLE 原名 TO 新名字; ALTER TABLE 原名 RENAME 新名字; ALTER TABLE 原名 ...
  • ES6之Promise用法详解

    2019-02-18 22:54:00
    要想学习一个知识点,肯定是从三个方面出发,what、why、how。下面就跟着我一步步学习吧~ 二 什么是Promise 首先是what。那么什么是Promise呢? 以下是MDN对Promise的定义 The Promise object is use...
  • shell下的seq用法

    2012-07-26 14:14:56
    linux下seq的用法: ...它有三个选项 -f, --format=FORMAT use printf style floating-point FORMAT (default: %g) -s, --separator=STRING use STRING to separate numbers (default: \n) -w, --equal-wi...
  • (这里有小错误是删除test_01库) 2.对于一张表的修改 <1> 重命名一张表 重命名表语句有种形式,效果是一样的: RENAME TABLE 原名 TO 新名字; ALTER TABLE 原名 RENAME 新名字; ALTER TABLE 原名 ...
  • 下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0或多字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE ‘%%’ 将会...
  • Vue router基本用法

    2020-07-24 11:25:51
    一、安装 使用npm install vue-router或cnpm install vue-router或yarn add vue-router 来安装vue router 二、新建一router.js...、在src目录下新建一文件夹,文件夹里新建文件index.vue <template> <
  • 三个参数是Spotify方法特有的参数列表。 有关每种方法及其参数的更多文档,请参见文档或。 const result = useSpotify ( spotifyMethod , options , ... args ) const [ invoke , result ] = useSpotify

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 190
精华内容 76
关键字:

use三个用法