node

NodeJS中的module.exports、require和ES6中的export、import区别

筅森魡賤 提交于 2020-01-24 07:36:13
ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。 nodejs模块中exports和module.exports的区别 CommonJS模块规范 对于node执行的每一个js文件,都会自动创建一个module模块对象,如同一个封闭的函数一样,把一个函数封闭起来,外部怎样才能去引用呢?必然需要对完暴露出来一个“门”,也就是暴露出来一个接口。。 exports 和 module.exports 二者的关系: 1.module.exports才是真正的接口,exports只不过是它的一个辅助工具, 最终返回给调用的是module.exports而不是exports。module.exports 初始值为一个空对象 {},而exports为指向module.exports 的引用 2. 在require() 的时候,返回的是 module.exports 而不是 exports,因此,直接赋值exports常常会出现错误,而赋值为module.exports常常是解决这一问题的折中办法 3.所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提

node gyp的问题

那年仲夏 提交于 2020-01-24 07:08:24
解决 binding.gyp not found (xxx/xxx/xxx) while trying to load binding.gyp 问题 在使用ccap图形验证码模块时遇到这个问题 Error: gyp failed with exit code: 1 于是我手动删了rm -rf ~/.node-gyp/ 目录下的文件重新执行了npm install node-gyp -g,但并没有解决问题,反而来了一个新问题 binding.gyp not found (xxx/xxx/xxx) while trying to load binding.gyp 这个就尴尬了,网上一番查找折腾,最终用如下方法解决问题 更新一下npm sudo npm cache clean -f sudo npm install npm -g 1 2 重新安装node-gyp 来替换node自带node-gyp sudo npm uninstall node-gyp -g sudo npm uninstall node-gyp sudo npm install node-gyp -g 来源: https://www.cnblogs.com/xiaocongcong888/p/9397872.html

gyp编译工具

久未见 提交于 2020-01-24 07:08:04
最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了解了一下 google gyp 工具, gyp 的意思是 generate your project. 该工具是chromium 团队为了解决 chromium 浏览器多平台构建问题, 它可以为不同的操作系统生成专门的项目文件, 比如为 windows 生成 VC++ 项目文件, 为 mac 生成 xcode 项目文件, 为 Linux 生成 Makefile 项目文件, 进而利用这些平台特定的编译工具, 完成项目构建. gyp 项目配置文件是 .gyp 和 gypi(这里的 i 是C++ 的 include 意思), gyp和gypi配置文件其实可以认为是一个json文件, 可以允许使用 # 做注释. 一个 .gyp 文件. (1). 在mac上, 一个 .gyp 文件会生成一个 .xcodeproj 文件 (2). 在win上, 一个 .gyp 文件会生成一个 .sln 文件, 每个target会生成一个 .vcproject 文件 (3) 在linux上, 一个.gyp文件会生成一个 Makefile. 使用说明: http://erikge.com/articles/HelloGyp http

[Tips]Fix node.js addon build error: \"gyp: binding.gyp not found\"

╄→гoц情女王★ 提交于 2020-01-24 07:07:48
基于node-gyp写Node.js native addon的时候,碰到一个很恶心的问题。 调用“node-gyp configure”能成功,再调用“node-gyp”时总会报错,最后发现时系统时间不对。 # Sympton $ node-gyp configure $ node-gyp build make: Entering directory `/home/piaoger/Public/Piaoger/nodeaddon/build' make: Warning: File `Release/.deps/./Release/nppluginproxy.node.d' has modification time 2.7e+06 s in the future ACTION Regenerating Makefile gyp: binding.gyp not found (cwd: /home/piaoger/Public/Piaoger/nodeaddon/build) while trying to load binding.gyp make: *** [Makefile] Error 1 # Solution Set correct system time. 来源: https://www.cnblogs.com/piaoger/p/3258359.html

一步一步编写AVL树

送分小仙女□ 提交于 2020-01-24 06:57:31
第一步:定义结构体 typedef struct Node{ int d; //data int h=1; //height struct Node* l=NULL; struct Node* r=NULL; Node(int d=0):d(d){ } }Node; 这个结构体和常规的二叉树结构体很相似。但是不同的是多了个属性“h”(height)。用这个属性来记录结点的高度,叶子结点为1,空结点为0 。 第二部:编写BST树的插入函数 Node* insert(Node* p,int v){ Node * node=new Node(v); if(!p){ return node; } if(v < p->d){ //左子树 if(p->l){ p->l=insert(p->l,v); }else{ p->l=node; } }else{ if(p->r){ p->r=insert(p->r,v); }else{ p->r=node; } } // setHeight(p); //平衡旋转代码 //end of 平衡旋转代码 return p; } 第三步:编写高度获取与设置的辅助函数 高度获取: int getHeight(Node* node){ if(node) return node->h; //如果非空返回这个结点的height return 0; //空节点的高度是0

前端打包之Rollup.js

你。 提交于 2020-01-24 06:31:12
参考:rollup中文网 rollup功能单一,webpack功能强大 工具要尽量功能单一,可集成,可扩展 npm init npm i rollup rollup-plugin-node-resolve rollup-plugin-babel babel-plugin-external-helpers babel-preset-latest babel-core --save-dev 配置.babelrc { "presets" : [ [ "latest" , { "es2015" : { "modules" : false } } ] ] , "plugins" : [ "external-helpers" ] } 配置rollup.config.js import babel from "rollup-plugin-babel" import resolve from "rollup-plugin-node-resolve" export default { entry : 'src/index.js' , format : 'umd' , // 兼容性设置,可适用js,es6,AMD等语法 plugins : [ resolve ( ) , babel ( { exclude : 'node_modules/**' } ) ] , dest : 'build/bundle

java 单链表 首位合并与交叉合并

一曲冷凌霜 提交于 2020-01-24 05:38:51
class ListMethod { //合并两个有序单链表 public singleNode Join ( singleNode list , singleNode list1 ) { Node head = list . getHead ( ) ; Node head1 = list1 . getHead ( ) ; //连接到末尾 Node cur = head . next ; while ( true ) { if ( cur . next == null ) break ; cur = cur . next ; } cur . next = head1 . next ; return list ; } public singleNode crossJoin ( singleNode list , singleNode list1 ) { Node head = list . getHead ( ) ; Node head1 = list1 . getHead ( ) ; singleNode newNodeList = new singleNode ( ) ; Node headNew = newNodeList . getHead ( ) ; //交叉连接 Node curNew = headNew ; Node cur = head . next ; Node

package.json是什么时候出现的

匆匆过客 提交于 2020-01-24 05:34:42
如果你从事前端开发,或者你的项目使用了某个前端框架,比如VUE,你一定见过package.json这个文件,我在想这个文件是什么时候添加进项目工程的?为什么需要这个文件,它有什么作用? 为了搞清楚这些问题,我开始查资料,然后呢,然后我发现自己对前端确实知道的很少。 为什么前端需要Node? Vue.js官方教程上说: 安装教程给出了更多安装Vue的方式。请注意我们不推荐新手直接使用vue-cli,尤其是在你还不熟悉基于Node.js的构建工具时。 那么,基于Node.js的构建工具有哪些呢?比如Webpack、Babel、ESLint等。 为什么Node自带NPM? 《深入浅出Node.js》中第2章开头说: 首先,我想从模块为你娓娓道来Node。 JavaScript起初没有模块的概念,随着Web发展,社区开始为JavaScript制定相应规范,CommonJS规范是一个里程碑,它对模块的定义包括三个部分:模块引用、模块定义、模块标识。 如果说CommonJS是JavaScript模块方面的理论的话,Node就是模块的实现。但Node并非完全按照规范实现,而是对模块规范进行了一定的取舍。在Node中,模块分为两类:一类是Node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块。 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用

Node笔记(2)

元气小坏坏 提交于 2020-01-24 05:18:39
写一个可以生成多层级文件夹的函数 const fs = require('fs'); const path = require('path'); function mkdirs (pathname,callback){ var root = path.dirname(module.parent.filename); pathname = path.isAbsolute(pathname)?pathname:path.join(__dirname,pathname); relativepath = path.relative(__dirname,pathname); var folders = relativepath.split(path.sep); try { var pre = ''; folders.forEach(folder =>{ try { //如果不存在则报错 fs.statSync(path.join(__dirname,pre,folder)); } catch (error) { fs.mkdirSync(path.join(__dirname,pre,folder)); } pre = path.join(pre, folder); }); callback && callback(null); } catch (error) { callback &&

589. N叉树的前序遍历

人盡茶涼 提交于 2020-01-24 02:51:26
解题思路: 前序遍历是先保存当前节点的值,然后递归遍历其子节点的值。 代码实现如下: /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { val = _val; children = _children; } }; */ class Solution { private List<Integer> list=new ArrayList<Integer>(); public List<Integer> preorder(Node root) { if(root==null){ return list; } list.add(root.val); for(Node node:root.children){ preorder(node); } return list; } } 来源: CSDN 作者: 我就是个渴望成长的小菜鸡 链接: https://blog.csdn.net/junjunjiao0911/article/details/104001622