精华内容
下载资源
问答
  • include() 与require() 的功能相同 唯一不同:require()不管是否被执行,只要存在,php在执行前都会预引入,include()则是执行到该语句时才进行引入 include_once() 与 require_once() 都是检测文件是否被引入,被...

    转载自 黄寿松的博客 php中require、require_once、include、include_once类库重复引入效率问题详解
    include() 与require() 的功能相同

    唯一不同:require()不管是否被执行,只要存在,php在执行前都会预引入,include()则是执行到该语句时才进行引入

    include_once() 与 require_once() 都是检测文件是否被引入,被引入则不会引入

    唯一不同: require_once()为无条件包含,顾名思义也就是引入后如遇到错误则停止,include_once()则忽略然后继续执行

    关于效率问题,我要说明,请自觉少用include_once()、 require_once()

    该函数原理:引入文件->对当前脚本语句进行比较是否包含过->决定是否引入,效率可想而知,你想你要是整个项目上百个类库,一次执行中比较数十次是怎样的一个恐怖的后果

    在这里写一下个人的多类库中防止重复引入文件的解决方式:

    1.在调用脚本使用require();

    2.类库中防止重复使用 class_exists(‘类名’) or include(‘类库绝对路径’);

    解释:调用脚本的文件使用一次require(),因为调用脚本为程序通用入口,此处引入公共类库很少会造成公共类库没有被使用,在类库中使用以上语句,能防止当前脚本重复引入公共类库,并且只要通过判断条件才会执行引入,不会重复预引入,提高程序执行效率

    展开全文
  • require doing相当于require to be done,两者可以互换,但是如果用动名词,要用主动的形式表示被动意义 2 扩展 有些动词后接动名词主动式可表被动意义,而不定式则须用其被动式表被动意义。如: I won’t bear ...

    1 区别
    require doing相当于require to be done,两者可以互换,但是如果用动名词,要用主动的形式表示被动意义
    2 扩展
    有些动词后接动名词主动式可表被动意义,而不定式则须用其被动式表被动意义。如:
    I won’t bear thinking of. 我不堪被人想念。
    I won’t bear to be thought about.
    It needs repairing. 它需要修理。
    It needs to be repaired.
    The cloth won’t bear washing. 这布料经不起洗。
    The cloth won’t bear to be washed.
    The child wants scolding. 这孩子就是欠揍。
    The child wants to be scolded.

    展开全文
  • 浅谈require和import

    万次阅读 多人点赞 2018-09-28 20:32:31
    最近在学习webpack时候,教程上用到的是require,但是之前我写代码用的Import比较多,所以借这个机会来学习一下: node编程中最重要的思想就是模块化,import和require都是被模块化所使用。 遵循规范 –require 是 ...

    最近在学习webpack时候,教程上用到的是require,但是之前我写代码用的Import比较多,所以借这个机会来学习一下:
    node编程中最重要的思想就是模块化,import和require都是被模块化所使用。

    遵循规范
    –require 是 AMD规范引入方式
    –import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法

    调用时间
    –require是运行时调用,所以require理论上可以运用在代码的任何地方
    –import是编译时调用,所以必须放在文件开头

    本质
    –require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
    –import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require

    require时代的模块
    node编程中最重要的思想之一就是模块,而正是这个思想,让JavaScript的大规模工程成为可能。模块化编程在js界流行,也是基于此,随后在浏览器端,requirejs和seajs之类的工具包也出现了,可以说在对应规范下,require统治了ES6之前的所有模块化编程,即使现在,在ES6 module被完全实现之前,还是这样。

    node的module遵循CommonJS规范,requirejs遵循AMD,seajs遵循CMD,虽各有不同,但总之还是希望保持较为统一的代码风格。

    // -------- node -----------
    module.exports = {
      a : function() {},
      b : 'xxx'
    };
    // ----------- AMD or CMD ----------------
    define(function(require, exports, module){
      module.exports = {
        a : function() {},
        b : 'xxx'
      };
    });
    

    可以看出,为了保持风格的高度统一,除了在浏览器端的模块中要使用一个define函数来提供模块的闭包以外,其他代码可以完全一致。

    // b.js
    // ------------ node ---------
    var m = require('./a');
    m.a();
    // ------------ AMD or CMD -------------
    define(function(require, exports, module){
       var m = require('./a');
       m.a();
    });
    

    在使用上,也非常相似。

    ES6中的module
    ES6发布的module并没有直接采用CommonJS,甚至连require都没有采用,也就是说require仍然只是node的一个私有的全局方法,module.exports也只是node私有的一个全局变量属性,跟标准半毛钱关系都没有。

    export导出模块接口
    export的用法挺复杂的,具体有哪些可以看 这里 。这里举几个例子:

    // a.js
    export default function() {}
    export function a () {}
    
    var b = 'xxx';
    export {b}; // 这是ES6的写法,实际上就是{b:b}
    setTimeout(() => b = 'ooo', 1000);
    export var c = 100;
    

    在要导出的接口前面,加入export指令。
    在export之后,b还可以被修改,这和CommonJS有着巨大不同,关于内部机理的东西,本文就无耻的省略了。

    注意,下面的语法有严重错误:

    // 错误演示
    export 1; // 绝对不可以
    var a = 100;
    export a;
    

    export在导出接口的时候,必须与模块内部的变量具有一一对应的关系。直接导出1没有任何意义,也不可能在import的时候有一个变量与之对应。 export a 虽然看上去成立,但是 a 的值是一个数字,根本无法完成解构,因此必须写成 export {a} 的形式。即使a被赋值为一个function,也是不允许的。而且,大部分风格都建议,模块中最好在末尾用一个export导出所有的接口,例如:export {fun as default,a,b,c};
    import导入模块
    import的语法跟require不同,而且import必须放在文件的最开始,且前面不允许有其他逻辑代码,这和其他所有编程语言风格一致。

    import的使用和export一样,也挺复杂,可以在 这里 大致了解。举几个例子:

    import $ from 'jquery';
    import * as _ from '_';
    import {a,b,c} from './a';
    import {default as alias, a as a_a, b, c} from './a';
    

    这里有一些坑,下面会讲到。
    import后面跟上花括号的形式是最基本的用法,花括号里面的变量与export后面的变量一一对应。这里,你必须了解 对象的解构赋值 的知识,没这知识,你根本没法在这里装逼。了解了解构赋值,这里的“一一对应”的关系就能具体理解了。

    as关键字
    编程的同学对as都容易理解,简单的说就是取一个别名。export中可以用,import中其实可以用:

    // a.js
    var a = function() {};
    export {a as fun};
    
    // b.js
    import {fun as a} from './a';
    a();
    

    上面这段代码,export的时候,对外提供的接口是fun,它是a.js内部a这个函数的别名,但是在模块外面,认不到a,只能认到fun。

    import中的as就很简单,就是你在使用模块里面的方法的时候,给这个方法取一个别名,好在当前的文件里面使用。之所以是这样,是因为有的时候不同的两个模块可能通过相同的接口,比如有一个c.js也通过了fun这个接口:

    // c.js
    export function fun() {};
    

    如果在b.js中同时使用a和c这两个模块,就必须想办法解决接口重名的问题,as就解决了。

    default关键字
    其他人写教程什么的,都把default放到export那个部分,我觉得不利于理解。在export的时候,可能会用到default,说白了,它其实是别名的语法糖:

    // d.js
    export default function() {}
    // 等效于:
    function a() {};
    export {a as default};
    

    在import的时候,可以这样用:import a from './d';
    等效于,或者说就是下面这种写法的简写,是同一个意思
    import {default as a} from './d';
    这个语法糖的好处就是import的时候,可以省去花括号{}。简单的说,如果import的时候,你发现某个变量没有花括号括起来(没有*号),那么你在脑海中应该把它还原成有花括号的as语法。

    所以,下面这种写法你也应该理解了吧:

    import $,{each,map} from 'jquery';
    //import后面第一个 $ 是 {defalut as $} 的替代写法。
    

    *符号
    *就是代表所有,只用在import中,我们看下两个例子:

    import * as _ from '_';
    

    在意义上和import _ from '_'; 是不同的,虽然实际上后面的使用方法是一样的。它表示的是把’_’ 模块中的所有接口挂载到 _ 这个对象上,所以可以用 _.each 调用某个接口。

    另外还可以通过*号直接继承某一个模块的接口:

    export * from '_';
    // 等效于:
    import * as all from '_';
    export all;
    

    *符号尽可能少用,它实际上是使用所有export的接口,但是很有可能你的当前模块并不会用到所有接口,可能仅仅是一个,所以最好的建议是使用花括号,用一个加一个。

    该用require还是import?
    require的使用非常简单,它相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,相当于把require和module.exports进行平行空间的位置重叠。

    而且require理论上可以运用在代码的任何地方,甚至不需要赋值给某个变量之后再使用,比如:

    require('./a')(); // a模块是一个函数,立即执行a模块函数
    var data = require('./a').data; // a模块导出的是一个对象
    var a = require('./a')[0]; // a模块导出的是一个数组
    

    你在使用时,完全可以忽略模块化这个概念来使用require,仅仅把它当做一个node内置的全局函数,它的参数甚至可以是表达式:require(process.cwd() + '/a');
    但是import则不同,它是编译时的(require是运行时的),它必须放在文件开头,而且使用格式也是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只选择import的接口进行编译,这样在性能上比require好很多。

    从理解上,require是赋值过程,import是解构过程,当然,require也可以将结果解构赋值给一组变量,但是import在遇到default时,和require则完全不同: var $ = require('jquery');import $ from 'jquery'是完全不同的两种概念。

    上面完全没有回答“改用require还是import?”这个问题,因为这个问题就目前而言,根本没法回答,因为目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require。这也是为什么在模块导出时使用module.exports,在引入模块时使用import仍然起效,因为本质上,import会被转码为require去执行。

    但是,我们要知道这样一个道理,ES7很快也会发布,js引擎们会尽快实现ES6标准的规定,如果一个引擎连标准都实现不了,就会被淘汰, ES6是迟早的事 。如果你现在仍然在代码中部署require,那么等到ES6被引擎支持时,你必须升级你的代码,而如果现在开始部署import,那么未来可能只需要做很少的改动。

    学习教程:https://www.tuicool.com/articles/uuUVBv2

    展开全文
  • require用法

    万次阅读 2018-03-09 11:35:10
    原理的东西这里不多做解释,我们这节只是介绍一下require的用法:1.首先我们要下载require.js文件;2.html引入<script src="../js/require.js" data-main="main"></script...

    现在前端的页面都采用模块化来加载js;避免了js加载的延迟顺序依赖等问题;原理的东西这里不多做解释,我们这节只是介绍一下require的用法:

    1.首先我们要下载require.js文件;

    2.html引入<script src="../js/require.js" data-main="main"></script>;这里src是require.js的路径;data-main="是引入js主文件的路径";由于默认主文件是js这里就省去.js;

    3.编写模块儿代码:必须用AMD规范;

    例如:util.js这里没有依赖

    define(function(){
    	var util={
    		logLocation:function(x,y){
    			return (x+y);
    		}
    	}
    	return util;
    })
    aUtil.js依赖于util就要这么写
    define(['util'],function(util){
    	var autil={
    		aaa:function(x,y,z){
    			return util.logLocation(x,y)+z
    		}
    	}
    	return autil;
    })

    ['util']为依赖的模块,这里是数组,可以是多个依赖,这里默认路径是相同的,不同可以用相对路径;function(uitl);这里的参数和前边的依赖是一一对应的是依赖返回的对象,我们调用的就是对象的方法;

    主js这么写:

    require(['aUtil'],function(autil){
    	console.log(autil.aaa(1,2,3));
    })

    这里是最终输出,需要将define,改为require,依赖和参数的写法同上;我们默认的是js路径一样;如果不一样需要配置config:

    这里可以这样配置:

    require.config({
    	baseUrl:"../js",
    	paths:"a-util"
    })
    或者:
    require.config({
    	paths:"../js/a-util"
    })

    关于更多的配置操作,我们这里不做概述,如有错误望指正

    展开全文
  • require doing

    千次阅读 2018-03-27 10:20:29
    require +n.+to do sth需要某人做某事情,命令某人做某事情.如The roof requires an expert to repair.屋顶需要专家才能修理require doing sth需要做某事情如The roof requires repairing屋顶需要修理了require doing...
  • let src ="../../assets/imgs/...require(src); require接收了一个变量,会报上面的警告,接收一个写死的字符串值时则没有警告! 下面三种写法没有报警告: require("../../assets/imgs/ziyuan6.png"); ...
  • ruby 的 require require_relative

    千次阅读 2016-05-18 00:39:07
    require require 是 kernel的一个方法 require filename 如果filename 是一个相对路径 则从 $LAOD_PATH寻找相应的文件(.rb,.so,.dll) note: $LOAD_PATH 指的是Ruby读取外部文件的一个环境变量,其实和...
  • 带表达式的 require 语句 如果 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入 require("./template/" + name + ".ejs"); webpack ...
  • LUA Require函数

    千次阅读 2019-04-25 18:02:47
    Lua提供高级的require函数来加载运行库。粗略的说require和dofile完成同样的功能但有两点不同: require会搜索目录加载文件 require会判断是否文件已经加载避免重复加载同一文件。由于上述特征,require在...
  • require的用法

    万次阅读 2017-09-01 11:32:37
    require最常用的方法require(‘http’) 内置模块require(‘./server’) “./”表示当前路径,后面跟的是相对路径require(“../lib/server”) ../表示上一级目录,后面跟的也是相对路径server.jsvar http = require('...
  • JS报错:require is not defined

    万次阅读 2018-11-17 13:40:40
    浏览器端不能识别require关键字,require是node.js环境下的,在node_modules文件夹里面的模块下面常见require 解决方法: 通过工具browserify或者是webpack把js文件编译一下,转成浏览器端可识别的。 //安装...
  • lua require机制

    万次阅读 2018-06-07 15:32:47
    相信大家在lua中都用过require。为了达到代码复用和结构化的目的,各种语言都有require机制。lua的require看似简单,其实里面有很多玄机。 一 require从哪里加载模块文件 从虚拟机的path,cpath等全局变量中。...
  • requirerequire.async区别

    千次阅读 2016-06-02 18:12:45
    seajs github的issue list里有说,要大家把require()这个看做是js的...require无法完成条件加载。如下代码: JavaScript code ? 1 2 3 4 5 6 7 define(function
  • 我是这样引用图片 但是在编译的时候报错了,如图下 解决方法: 在vue项目中的.eslintrc.js文件,加如下代码 PS: 如果没有就在根目录下创建一个 ... "global-require": 0 }, }; 然后重启项目。 ...
  • Vue require 使用

    千次阅读 2020-01-10 11:04:00
    require.context 使用 一次引入多个文件 require.context('文件路径',true/false,正则表达式) const modulesFiles = require.context('./modules', true, /\.js$/) const modules = modulesFiles.keys().reduce...
  • 1.composer.json文件中的requirerequire-dev中存放的均是package 2.两者的区别在于require中所引用的包在线上线下的项目中均会使用,require-dev中的包只在本地开发的时候使用。 "require": { "php": ">=5.6.0...
  • requirerequire async的区别

    千次阅读 2015-06-25 14:36:18
    seajs github的issue list里有说,要大家把require()这个看做是js的...require无法完成条件加载。如下代码: JavaScript code ? 1 2 3 4 5 6 7 define(function
  • require加载机制 https://www.cnblogs.com/softidea/p/5242941.html 卸载已经require的模块 https://blog.csdn.net/qq_28412897/article/details/82883133
  • require中参数变量

    万次阅读 2018-08-10 09:52:36
    本人新手小白,应届生门岗进入公司,遇到了一个问题,require()中我想给一个变量为参数,根据实际要求加载不同的内容,但是r直接加变量会报错,can't require module'.',下面是我的解决办法,更改后即可正常加载了 ...
  • require_once 的使用及与require的区别
  • 处理失败方式不同: require 失败时会产生一个致命级别错误,并停止程序运行。 include 失败时只产生一个警告...include_once/require_once和include/require 区别在于当所包含的文件代码已经存在时候,不在包含。...
  • require.context

    千次阅读 2019-09-17 11:38:47
    在用vue开发的过程中,我们可能会使用import引入文件,但需要引入多个的时候就会变得繁琐起来,这时我们可以使用require.context去动态引入多个文件。 用法:require.context(文件夹路径,是否搜索子文件夹下面的...
  • vue之require.context

    万次阅读 2018-10-11 15:46:46
    初识require.context require.context是webpack中,用来创建自己的(模块)上下文 webpack会在构建的时候解析代码中的require.context() require.context函数接收三个参数: 要搜索的文件夹目录 是否还应该...
  • const os = require('os'); module.exports = { showMem(){ const mem = os.freemem() / os.totalmem() * 100; console.log(`内存占用率${mem.toFixed(2)}`); }, showCpu(){ const cpuStat = require('cpu-...
  • Ruby——关于requirerequire_relative

    千次阅读 2014-10-08 15:13:06
    requirerequire_relative都是Kernel的方法。 但是两者用起来还是有区别的。 requrie filename 1)如果filename是一个相对路径,则会在$LAOD_PATH($:)中去寻找 $LOAD_PATH.unshift(File.dirname(__FILE__))...
  • require和import区别

    万次阅读 多人点赞 2018-11-16 19:28:13
    require:运行时加载 import:编译时加载(效率更高) 区别2:模块的本质 require:模块就是对象,输入时必须查找对象属性 import:ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,再通过 import ...
  • lua require路径设置实例

    千次阅读 2018-04-14 16:37:41
    1.首先要强调的是,lua require的路径用的是斜杠"/",而不是从Windows文件属性那里复制来的反斜杠"\"。2.通过 print(pagckage.path) 和print(package.cpath)打印lua系统封装的两个全局属性可以...
  • react require图片路径问题

    千次阅读 2019-02-18 10:55:40
    require中引用本地图片时需要使用require(require里的值必须为字符串) 本地测试时, 如后端返回图片路径为'../static/img/img1.jpg', 使用props传入显示图片的组件 在子组件中引入该路径(引入失败): 此时看到...
  • webpack: require.ensure与require AMD的区别

    万次阅读 2015-07-10 09:18:02
    简介本例测试require-ensure和require-amd的区别。 require-amd 说明: 同AMD规范的require函数,使用时传递一个模块数组和回调函数,模块都被下载下来且都被执行后才执行回调函数 语法: require(dependencies: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 672,111
精华内容 268,844
关键字:

require