node.js之十大Web框架

之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了。
再到后来是因为Settings-Sync插件二次开发,我需要用node.js造一个mock server,而当时在开源项目上找到一个模拟github rest api的node.js服务端程序,然后我就在此基础上开发。从工作中学习有应用场景有目的性,果然还是学的要快很多。

今天之所以要说一说node.js的十大Web框架,主要是觉得以后针对VsCode开发或者是我自己的项目,用Node.js可能会比较多,比如我将我的博客系统一步一步完善,我想尝试微服务的很多种实践方式,其实很多企业用微服务,还有一个原因就是不受编程语言的制约。

大前提:框架无优劣之分,只有在某个应用场景是否更适合和更好。

javascript之Map

javascript中的map,我用的不是特别多,倒是Java中的Map或HashMap,经常用。

顺便围绕几个方面介绍一下map?

1.Map对象

Map对象是一种有对应键值对的对象,JS的Object也是键值对的对象。

ES6中的Map相对Object对象有几个区别?
(1)Object对象有原型,也就是说它有默认的key值在对象上面,除非我们使用Object.create(null)创建一个没有原型的对象;
(2)在Object中,只能把String和Symbol作为key值,但是在Map中,key值可以是任何基本类型(String,Number,Boolean,undefined,NaN…),或者对象(Map,Set,Object,Function,Symbol,null…);
(3)通过Map中的size属性,可以很方便地获取Map长度,要获取Object的长度,你只能用别的方法;

Map实例对象的key值可以为一个数组或者一个对象,或者一个函数,比较随意,而且Map对象实例中数据的排序是根据用户push的顺序进行排序的,而Object实例中key,value的顺序则有些规律(它们会先排数字开头的值,然后才是字符串开头的key值);

2.Map实例属性

map.size这个属性和数组的length功能一样,都表示当前实例的长度。

3.Map实例的方法

clear() 删除所有的键值对;
delete(key) 删除指定键;
entries() 返回一个迭代器,迭代器按照对象的插入顺序返回[key,value];
forEach(callback,context) 循环执行函数并把键值对作为参数,context为执行函数的上下文this;
get(key) 返回Map对象key相对的value值;
has(key) 返回布尔值,判断Map对象是否存在指定的key;
keys() 返回一个迭代器,迭代器按照插入的顺序返回每一个key元素;
set(key,value) 给Map对象设置key/value键值对,返回这个Map对象(相对于JavaScript的Set,Set对象添加元素的方法叫add,而Map对象添加元素的方法为set)
iterator 和entireds()方法一样,返回一个迭代器,迭代器按照对象的插入顺序返回[key,value]

Springboot实现跨域请求

之所以需要用到跨域请求,目的在于现在的Java项目,几乎基本上都前后端分离,除一些较老的维护项目外(通常是单体或者是maven多模块形式,不过本质上还是将前端放在webapps下)。

SpringBoot实现跨域其实和Spring是一样,区别不大,如果要说区别的话,Spring需要在对应的xml文件中配置bean,而SpringBoot则通过注解的方式。

Spring配置跨域请求可参考我的这篇文章:https://www.cnblogs.com/youcong/p/9676433.html

node.js如何引用其它js文件

以Java来说,比如要实现第三方存储,我可能需要导入对应的库,以maven为例,使用腾讯云或者七牛云、阿里云,我需要导入对应的maven依赖。
再比如,有些时候我们封装某个类,而那个类不在该包下,我们需要导包(就是指定那个类的路径,如果路径不对,则可能出现找不到这个类之类的错误,通常对应的IDE会提示错误)。

其实,node.js也是这样的。最近在开发node.js的时候,难免也会遇到需要引入其它js文件。今天我以一个简单示例来说一说node.js如何引用其它js文件。

node.js服务端程序在Linux上持久运行

如果要想在服务端部署node.js程序,让其持久化运行,就不能单单使用npm start命令运行,当然了,这样运行是毫无问题的,但是当关闭xshell窗口或者是关闭进程的时候(其实关闭xshell窗口相当于默认关闭进程),就无法访问对应的node.js服务端程序了。

那么该如何才能持久访问呢?

其实也就两步

javascript之传输加密

为什么要使用javascript加密呢?
服务端加密远远不够,客户端或者浏览器端也需要加密,以此保证传输信息过程的安全。

今天就我工作中说说这么几种加密算法及其对应的应用场景,如下所示:

  • base64
  • md5
  • des