JS learning - simon9k/stackedit GitHub Wiki

6-27

  • eventMgr.addListener(eventName, callback),将一个eventName,和callback(listener,可能多个listener)关联起来,实现事件event的触发/分发执行;
  • eventMgr本质上是一个事件对应列表的维护;
  • extension的触发问题:pageDowneditor触发extension的机制还未清楚,但是通过对emailConverter的研究,传入用以处理的text是一大块,不是全部,但也为过滤到仅包括对应的正则表达式字符才触发对应的extension,也不是一行这种比较小的单位;

6-23

  • 如何载入html文件,然后在JS中动态使用(动态指添加管理节点tag,加入动作等)
// text.js plugin help to load html file into js like below,
define([
	"jquery",
	"underscore",
...
	"text!html/bodyEditor.html",
	"text!html/bodyViewer.html",
], function($, _, crel, editor, layout, constants, utils, storage, settings, eventMgr, MonetizeJS, bodyEditorHTML, bodyViewerHTML, settingsTemplateTooltipHTML, settingsPdfOptionsTooltipHTML) {
 
......

//this coded append these html to DOM
		if(window.viewerMode === true) {
			document.body.innerHTML = bodyViewerHTML;
		}
		else {
			document.body.innerHTML = bodyEditorHTML;
		}
......

//这样后续代码可用,
		// Add customized buttons
		var $btnGroupElt = $('.wmd-button-group1');
		$("#wmd-bold-button").append($('<i class="icon-bold">')).appendTo($btnGroupElt);
		$("#wmd-italic-button").append($('<i class="icon-italic">')).appendTo($btnGroupElt);

6-9

  • eventMgr.js
    • extensionList: 从arguments中获取prototype是Extension的,组成一个array;
    • eventListenerListMap:通过addEventHook,给每个event,建立一个array,链接上对应要响应该event的函数(属于某天object的);
    • eventMgr一大堆函数,是由其它类给加上的,???

5-31

  • var extensionSettings = settings.extensionSettings || {};
var cnblogs = cnblogs || {} ;
这是确保cnblogs对象,在存在的时候直接用,不存在的时候直接赋值为{},我们来看看如何利用这个特性来实现Module模式的任意加载顺序: