require

Node.js 文件系统

时光怂恿深爱的人放手 提交于 2020-03-11 20:09:35
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。 异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。 建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。 创建 test.txt 文件 这是在test.txt中的内容 创建 main.js 文件 var fs=require("fs"); //异步 fs.readFile("test.txt",function(err,data){ if(err){ return console.error(err); } console.log("异步:"+data.toString()); }) //同步 var data=fs.readFileSync("test.txt"); console.log("同步:"+data.toString()); 异步模式下打开文件 fs.open(path, flags[, mode], callback) path - 文件的路径。 flags - 文件打开的行为。具体值详见下文。 mode - 设置文件模式(权限),文件创建默认权限为

Node中导入模块require和import??

佐手、 提交于 2020-03-11 17:36:38
转自: https://blog.csdn.net/wxl1555/article/details/80852326 S6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。 不把require和import整清楚,会在未来的标准编程中死的很难看。 require时代的模块 node编程中最重要的思想之一就是模块,而正是这个思想,让JavaScript的大规模工程成为可能。模块化编程在js界流行,也是基于此,随后在浏览器端,requirejs和seajs之类的工具包也出现了,可以说在对应规范下,require统治了ES6之前的所有模块化编程,即使现在,在ES6 module被完全实现之前,还是这样。 node的module遵循CommonJS规范,requirejs遵循AMD,seajs遵循CMD,虽各有不同,但总之还是希望保持较为统一的代码风格。 // a.js // ——– node ———– module.exports = { a : function ( ) {}, b : ’xxx’ }; // ———– AMD or CMD —————- define( function (

前端模块化方案

≡放荡痞女 提交于 2020-03-11 17:30:08
模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。本文主要介绍各规范下的模块化实现方式。 一、CommonJS Node.js是commonJS规范的主要实践者,它有四个重要的环境变量为模块化的实现提供支持:module、exports、require、global。实际使用时,用module.exports定义当前模块对外输出的接口(不推荐直接用exports),用require加载模块。 //定义模块math.js var basicNum = 0; function add(a, b) { return a + b; } module.exports = { //在这里写上需要向外暴露的函数、变量 add: add, basicNum: basicNum } //引用自定义的模块时,参数包含路径,可省略.js var math = require(‘./math‘); math.add(2, 5); //引用核心模块时,不需要带路径 var http = require(‘http‘); http.createService(...).listen(3000);   commonJS用同步的方式加载模块。在服务端

CommonJS模块与ES6模块的区别

谁说我不能喝 提交于 2020-03-11 12:25:56
到目前为止,已经实习了3个月的时间了。最近在面试,在面试题里面有题目涉及到模块循环加载的知识。趁着这个机会,将CommonJS模块与ES6模块之间一些重要的的区别做个总结。语法上有什么区别就不具体说了,主要谈谈引用的区别。 转载请注明出处:CommonJS模块与es6模块的区别 CommonJS 对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。 对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。 当使用require命令加载某个模块时,就会运行整个模块的代码。 当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。 循环加载时,属于加载时执行。即脚本代码在require的时候,就会全部执行。一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出。 ES6模块 ES6模块中的值属于【动态只读引用】。 对于只读来说,即不允许修改引入变量的值,import的变量是只读的,不论是基本数据类型还是复杂数据类型。当模块遇到import命令时,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用

流程控制 - PHP手册笔记

风流意气都作罢 提交于 2020-03-11 06:46:04
脚本由语句构成,语句靠流程控制实现功能,这一节主要介绍了几个关键字的使用。 elseif elseif 和 else if 的行为完全一样,如果用冒号来定义 if/elseif 条件,那就不能用两个单词的 else if ,否则PHP会产生解析错误。 <?php $a = 1; $b = 2; if($a > $b) : echo "$a is greater than $b"; elseif($a == $b) : echo "$a equals $b"; else : echo "$a is neither greater than or equal to $b"; endif; 替代语法 下面的这些关键字可以使用流程控制的替代语法,基本形式是把左花括号换成冒号,右花括号换为下面的字符。 if - endif while - endwhile for - endfor foreach - endforeach switch - endswitch 注意!PHP不支持在同一控制块内混合使用两种语法。 do-while 这个循环乍看起来挺熟悉的,但是却忽略了它的某些用法。 手册中说,资深的C语言用户可能熟悉另一种不同的 do-while 循环用法,把语句放在 do-while(0) 之中。我竟然第一次听说有这种技巧,看来我还是C语言小白。 顺便搜索整理一下 do-while(0)

node读取docx文件并写入数据库

徘徊边缘 提交于 2020-03-10 10:50:32
const mysqlx = require("@mysql/xdevapi"); const path = "E:\\微信文档\\WeChat Files\\mxds123456\\FileStorage\\File\\2020-03\\101-200"; const fs = require('fs'); const iconv = require("iconv-lite"); var mammoth = require("mammoth"); fs.readdir( path, (err, files)=> // 读取文件夹下所有文件名(返回数组) { if(files.length > 0) { console.log(files.length); files = files.splice(6, 93); console.log(files.length); for(let i = 0; i < files.length; i++) { { const pathContent = `${path}\\${ files[i] }`; console.log(pathContent); mammoth.extractRawText({path: pathContent}) //读取docx文件 .then(function(result) { execute_mysql(

Vuex热更替功能

微笑、不失礼 提交于 2020-03-10 03:25:59
修改state, mutations, getters 等配置时,不触发页面刷新 store.js import Vuex from 'vuex' import defaultState from './state/state' import mutations from './mutations/mutations' import getters from './getters/getters' import actions from './actions/actions' export default () => { const store = new Vuex.Store({ strict: true, //禁止在非mutations内修改data的数据 state: defaultState, mutations, getters, actions }) if (module.hot) { module.hot.accept([ './state/state', './mutations/mutations', './getters/getters', './actions/actions' ], () => { const newState = require('./state/state').default const newMutations = require('.

如何部署单页面项目到服务器

耗尽温柔 提交于 2020-03-09 17:04:46
今天做vue单页项目,在本地dev环境下一切正常,准备部署到生产环境,结果发现页面一片空,想了许久,都不知道是什么问题。后来和后台同事交流,发现我的页面并不是在服务器根目录,而是由子目录。 后来才想起来曾经看过的一篇文章,内容如下: 最近好多伙伴说,我用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接访问index.html页面空白,刷新当前路由404......用react做的项目也同样遇到类似问题。现在我们一起讨论下单页面如何部署到服务器? 由于前端路由缘故,单页面应用应该放到nginx或者apache、tomcat等web代理服务器中,千万不要直接访问index.html,同时要根据自己服务器的项目路径更改react或vue的路由地址。 如果说项目是直接跟在域名后面的,比如:http://www.sosout.com ,根路由就是 '/'。 如果说项目是直接跟在域名后面的一个子目录中的,比如:http://www.sosout.com/children ,根路由就是 '/children ',不能直接访问index.html。 以配置Nginx为例,配置过程大致如下:(假设: 1、项目文件目录: /mnt/html/spa(spa目录下的文件就是执行了npm run dist 后生成的dist目录下的文件) 2、访问域名: spa.sosout.com

web服务版智能语音对话

谁说胖子不能爱 提交于 2020-03-09 06:51:22
在前几篇的基础上,我们有了语音识别,语音合成,智能机器人,那么我们是不是可以创建一个可以实时对象的机器人了? 当然可以! 一,web版智能对话 前提:你得会flask和websocket 1 ,创建flask项目 #!/usr/bin/env python # -*- coding:utf8 -*- import os from flask import Flask, render_template, send_file app = Flask(__name__) @app.route("/index") def index(): return render_template("index1.html") @app.route("/get_audio/<file_path>/<file_name>") def get_audio(file_path, file_name): new_file_path = os.path.join(file_path, file_name) return send_file(new_file_path) if __name__ == '__main__': app.run("127.0.0.1", 8000, debug=True) index.html:用的时候粘贴过去就行! <!DOCTYPE html> <html lang="en">

Node.js基础知识梳理

你说的曾经没有我的故事 提交于 2020-03-08 22:03:49
Node.js基础知识梳理 一、nodeJs概述 1、nodejs解决了高并发的问题,支持大量用户的并发连接;它不是为新连接的用户新开一个线程,而是为新连接用户触发一个事件 2、js引擎内置了JIT(即时编译),提高了js的执行速度,几乎接近于本地运行速度 3、nodejs采用非阻塞型I/O及时间循环机制;即它的I/O操作是不会阻塞线程的,并且通过事件的回电函数形成触发时间环 4、nodejs适合用于,大量处理输入/输出的应用,即如聊天器、电商网站等 5、nodejs中是通过以模块为单位来划分所有功能的,模块的导出和引入 //foo.js exports.printFoo = function(){ return "foo" } //bar.js var foo = require('./foo.js'); console.log(foo.printFoo); 核心模块有: assert、buffer、child_process、cluster、console、crypto、debugger、dns、domian、events、fs、http、https、net、os、path、punycode、querystring、readline、repl、stream、string_decoder、tls、tty、url、util、vm、zlib 二、基础知识 1、控制台 1.1