Jade Dungeon

Javascript

语言特性

基础:javascript.base

页面事件:javascript/page-event

正则:javascript.regex

函数式编程基础: https://zhuanlan.zhihu.com/p/111656554

性能:javascript.perform

HTTP请求:javascript/http-request

跨域请求:javascript.cross-domain

promis:javascript.promis

例子:javascript/example

json转字符串:

字符串转对象(strJSON代表json字符串)
  var obj = eval(strJSON);
  var obj = strJSON.parseJSON();
  var obj = JSON.parse(strJSON);
json对象转字符串(obj代表json对象)
  var str = obj.toJSONString();
  var str = JSON.stringify(obj)
运用时候需要除了eval()以外需要json.js包(切记哦) 	

JWT Inspector:JWT(JSON Web Token)通过安全可靠的方式传输数据。 当我们测试排查时,我们需要分析从浏览器接收到的JWT内容。token信息可能在URL, cookie或本地储存中。JWT Inspector是一款浏览器插件, 让我们可以从控制台或内置的界面解码JSON Web Token。你不需要在你的app中 跟踪token信息。你只需要按一下插件的按钮,JWT Inspector会自动展示你所需要的 所有信息,然后你可以复制其中任何token信息。

架构

调试:javascript.debugging

模块化: javascript.module

异步调用:javascript.async

页面模板:javascript.page-template

单元测试:https://zhuanlan.zhihu.com/p/323571051

不可变数据类型的库:Immutable.js

Debug工具库:javascript/3rdlib-debug

JQuery:jquery

AngularJs:angularjs

ExtJs:extjs

MathJax:javascript/mathJax

MathJax:javascript/mathJaxTest

reveal.js: reveal.js

impress.js:impress.js

手势操作: gesture.helper

Google Agent统计:ga.example

全javascript实现Web开发:javascript.full.webapp

hijk:hijk

puppeteer:puppeteer

express:express

react:react/index

运行环境

QuickJS:quickjs/index 非常好用的lua替代品

Java JJS:java-jjs

Node.js:nodejs

NodeJS的Stream:nodejs/stream

https://segmentfault.com/a/1190000011237265

https://jestjs.io/docs/en/tutorial-async

gulp

local storage

需求背景:两个页面 A、B,B 页面关闭时,通知 A 页面请求接口刷新列表页

实现

使用 storage 事件实现页面通信,约定好通信的 key,这里我们假定 key 为refresh_list

A 页面 监听 storage 事件

mounted() {
  window.addEventListener('storage', this.otherWindowListener, false);
  this.$on('hook:beforeDestroy', () => {
    window.removeEventListener('storage', this.otherWindowListener);
  });
},
methods: {
  otherWindowListener(event) {
    if (event.key === 'refresh_list'){
      // do something
    };
  },
},

B 页面,当保存时,设置约定好的 localStorage key 值,关闭页面

methods: {
  close() {
    localStorage.setItem('refresh_list', new Date().getTime());
    try {
        window.close();
      } catch (e) {
        console.log(e);
    }
  },
},
common.renderPagination = function(page, count, callbackName) {
	let i = 1;
	let html = '<ul class="pagination center">';
	if (page === 1) {
		html = html
				+ '<li><a class="disable" href="javascript:void(0);">&laquo;</a></li>'
				;
	} else {
		html = html + '<li><a href="javascript:' + callbackName + '(' + (page - 1)
				+ ');">&laquo;</a></li>'
				+ '<li><a href="javascript:' + callbackName + '(' + i
				+ ');">' + i + '</a></li>'
				;
	}
	i = i + 1;
	if (page > 6) {
		i = page - 5;
		html = html
				+ '<li><a class="disable" href="javascript:void(0);">...</a></li>';
	}
	while (page > i) {
		html = html + '<li><a href="javascript:' + callbackName + '(' + i
				+ ');">' + i + '</a></li>';
		i = i + 1;
	}
	html = html + '<li class="active"><a href="javascript:void(0);">' + page
			+ '</a></li>';
	i = page + 1;
	if ((count - page) > 6) {
		while (i <= (page + 5)) {
			html = html + '<li><a href="javascript:' + callbackName + '(' + i
					+ ');">' + i + '</a></li>';
			i = i + 1;
		}
		i = count;
		html = html
				+ '<li><a class="disable" href="javascript:void(0);">...</a></li>';
	}
	while (i <= count) {
		html = html + '<li><a href="javascript:' + callbackName + '(' + i
				+ ');">' + i + '</a></li>';
		i = i + 1;
	}
	if (page === count) {
		html = html
				+ '<li><a class="disable" href="javascript:void(0);">&raquo;</a></li>';
	} else {
		html = html + '<li><a href="javascript:' + callbackName + '(' + (page + 1) 
				+ ');">&raquo;</a></li>';
	}
	html = html + '</ul>';
	return html;
};