require

关于模块化开发的那些事儿

痴心易碎 提交于 2020-01-04 00:49:29
一、什么是模块化开发   一个 模块就是一个实现特定功能的文件,有了模块我们就可以更方便的使用别人的代码,要用什么模块就加载什么模块   好处:     1、避免变量污染,命名冲突     2、提高代码的复用性     3、提高维护性     4、依赖关系的管理 二、commonJS   commonJS由nodeJS发扬光大,这标志着js模块化正式登场   1、定义模块     根据commonJS规范,一个单独的文件是一个模块,每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非为global对象的属性。      2、模块输出     模块只有一个出口,module.exports对象。 我们需要把模块希望输出的内容放入该对象。   3、加载模块   加载模块用require方法,该方法读取一个文件并且执行,返回文件内部的module.exports对象 var name = 'Byron'; function printName(){ console.log(name); } function printFullName(firstName){ console.log(firstName + name); } module.exports = { printName: printName, printFullName:

【前端】---------------------闲聊模块化开发---------------------【劉】

我与影子孤独终老i 提交于 2020-01-04 00:49:12
一、什么是模块化开发   一个 模块就是一个实现特定功能的文件,有了模块我们就可以更方便的使用别人的代码,要用什么模块就加载什么模块   好处:      1、避免变量污染,命名冲突     2、提高代码的复用性     3、提高维护性     4、依赖关系的管理 二、commonJS   commonJS由nodeJS发扬光大,这标志着js模块化正式登场   1、定义模块     根据commonJS规范,一个单独的文件是一个模块,每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非为global对象的属性。      2、模块输出     模块只有一个出口,module.exports对象。 我们需要把模块希望输出的内容放入该对象。   3、加载模块   加载模块用require方法,该方法读取一个文件并且执行,返回文件内部的module.exports对象 var name = 'Byron'; function printName(){ console.log(name); } function printFullName(firstName){ console.log(firstName + name); } module.exports = { printName: printName, printFullName:

JavaScript的模块化之AMD&CMD规范

拥有回忆 提交于 2020-01-04 00:47:36
前端开发常常会遇到的问题:   1.恼人的命名冲突;   2.繁琐的文件依赖; 模块化开发的优势:   1.解决命名冲突和依赖管理;   2.模块的版本管理;   3.提高代码的可维护性;   4.前端性能优化; JavaScript本身不具备模块化的功能,开发人员为了更好的开发,需要人为的制定一套规范标准,约定一套固定的写法来实现JavaScript模块化功能。 一个模块化系统所必须的能力:  定义封装的模块  定义新模块对其他模块的依赖  可对其他模块的引入支持 AMD&CMD AMD AMD(Asynchronous Module Definition)异步模块定义: 是 RequireJS 在推广过程中对模块定义的规范化产出。 requireJS主要解决两个问题 多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器 js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长 requireJS定义了一个函数 define,它是全局变量,用来定义模块 define(id?, dependencies?, factory); id:可选参数,用来定义模块的标识,如果没有提供该参数,脚本文件名(去掉拓展名) dependencies:是一个当前模块依赖的模块名称数组 factory:工厂方法,模块初始化要执行的函数或对象。如果为函数

前端模块化,AMD和CMD的区别

半城伤御伤魂 提交于 2020-01-04 00:46:42
最近在研究cmd和amd,在网上看到一篇不错的文章,分享出来给大家一起看看。 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀 这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码 模块 既然JavaScript不能handle如此大规模的代码,我们可以借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念——package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担心命名冲突什么的,那么外部如果使用呢?直接import对应的package即可 import java.util.ArrayList; 遗憾的是JavaScript在设计时定位原因,没有提供类似的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化。 一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块

What is an immediately executed factory function in the context of JS module loading?

情到浓时终转凉″ 提交于 2020-01-03 03:09:03
问题 In the Require.js documentation, in the section called Why AMD, the following is asked: How are pieces of JavaScript code defined today? Among other answers is the following: Defined via an immediately executed factory function. I understand (at least I think I do) that a javascript factory function is simply a function that returns a new instance of an object, but I don't understand what this means in the context of this question. Can someone explain this? 回答1: My guess is you are not clear

What is an immediately executed factory function in the context of JS module loading?

馋奶兔 提交于 2020-01-03 03:07:25
问题 In the Require.js documentation, in the section called Why AMD, the following is asked: How are pieces of JavaScript code defined today? Among other answers is the following: Defined via an immediately executed factory function. I understand (at least I think I do) that a javascript factory function is simply a function that returns a new instance of an object, but I don't understand what this means in the context of this question. Can someone explain this? 回答1: My guess is you are not clear

webpack快速使用笔记

天涯浪子 提交于 2020-01-03 00:23:14
一、NPM 1.NPM是随同NodeJS一起安装的包管理工具。 http://www.1994july.club/?p=1454 2.安装 npm install npm -g npm -v 测试是否成功安装 3.使用淘宝镜像(cnpm命令) npm install -g cnpm --registry=https://registry.npm.taobao.org 4.安装模块 npm install <Module Name> 安装好之后,模块包就放在了工程目录下的node_modules目录中,因此在代码中只需要通过 require('express')的方式就可引入,无需指定第三方包路径。 var express = require('Module Name'); 5.全局安装与本地安装 npm install express # 本地安装 npm install express -g # 全局安装 http://www.1994july.club/?p=1456 本地安装将安装包放在./node_modules下(运行npm命令时所在的目录), 可以通过require()来引入本地安装的包。 全局安装将安装包放在/usr/local下或者你node的安装目录, 可以直接在命令行里使用。 6.Package.json主要属性说明 name-包名。 version-包的版本号

composer安装第三方的库packagist.org(laravel框架引入第三方库)

牧云@^-^@ 提交于 2020-01-02 21:01:11
建立composer.json composer require phpoffice/phpexcel //安装一个excel扩展库 composer require gregwar/captcha //安装一个验证码库 命令完成之后composer.json文件中就自动多个信息 (软件包也就下载在vendor文件中) 在"require":{ "gregwar/captcha":"~1.1", } "require": { "php": ">=5.6.4", "laravel/framework": "5.4.*", "laravel/tinker": "~1.0", "phpoffice/phpexcel": "^1.8" }, 这时候类已经下载到指定位置了,可能需要自动加载(我测试不添加自动加载,类是用不了的) 下来配置下自动加载(两种自动加载) "autoload": { "classmap": [ "database", "vendor/phpoffice/phpexcel/Classes/PHPExcel.php" ], "psr-4": { "App\\": "app/" } }, 然后类就可以用了 $objPHPExcel = new \PHPExcel();//用这个类没出现错误 Composer按照四种规范来加载文件: psr-4 psr-0

node child_process模块

跟風遠走 提交于 2020-01-02 21:00:06
NodeJs是一个单进程的语言,不能像Java那样可以创建多线程来并发执行。当然在大部分情况下,NodeJs是不需要并发执行的,因为它是事件驱动性永不阻塞。但单进程也有个问题就是不能充分利用CPU的多核机制,根据前人的经验,可以通过创建多个进程来充分利用CPU多核,并且Node通过了child_process模块来创建完成多进程的操作。 child_process模块给予node任意创建子进程的能力,node官方文档对于child_proces模块给出了四种方法,映射到操作系统其实都是创建子进程。但对于开发者而已,这几种方法的api有点不同 child_process.exec(command[, options][, callback]) 启动 子进程来执行shell命令,可以通过回调参数来获取脚本shell执行结果 const { exec } = require('child_process'); exec('cat *.js bad_file | wc -l', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`);

require.js shim, export myOwnGlobal name

巧了我就是萌 提交于 2020-01-02 20:20:31
问题 I'm not sure about the use of "exports" on shim config, following the example on the requireJS API, I can use Backbone (B in capital letter) to export it to a global scope. This means that it will be a window object property. But I realized that I'm forced to use that name, and I can't export it by other reference name, ie: "MyGlobalBackbone" require.config({ paths: { backboneAlias:'backbone' }, shim : { backboneAlias : { deps : [ 'underscore', 'jquery-1.9.1' ], exports : 'MyGlobalBackbone' }