exports 与 module.exports

在node.js中,常能见到exports与module.exports,初学中,对其很迷惑,看例说明,才发现其中不同之处,简单的可以把一个*.js的文件看成一个类,如果才采用exports那么就是输出类的变量或方法,如果采用module.exports来输出,那么只当是把输出的内容当成类。

首先,建立test1.js

exports.name = 'Name is a test one !';
exports.see = function(value) {
  console.log(value); // 输出值
};

建立test2.js

module.exports = 'Name is a test two !'

建立test3.js

module.exports = function(value) {
    this.name = 'This is a test three !'; // 要想输出,那么this一定要加上
    this.see = function() {
        console.log('see ' + this.name + '. value: ' + value + ' \n ok ?');
    };
};

接着建立一个app.js,用于调用以上文件

var test1 = require('./test1');
 
console.log(test1.name);
test1.see('me?');

显示结果为:

localhost:nodejs-demo porrychen$ node app.js
Name is a test one !
me?

var test2 = require('./test2');
 
console.log(test2);

显示结果为:

localhost:nodejs-demo porrychen$ node app.js
Name is a test two !

var test3 = require('./test3');
 
var t = new test3('porry');
console.log(t.name);
t.see();

显示结果为:

localhost:nodejs-demo porrychen$ node app.js
This is a test three !
see This is a test three !. value: porry
ok ?

最后,三种不同的测试例子,基本可以对exports与module.exports有所了解。

MAC的Copy

一直想写一写关于Mac下的拷贝、粘贴及剪切,虽然不难,但总归是会有好些人不知,呵呵,自我以为。。。

首先介绍一下场景(需求),桌面有两个文件,想把他们复制或是剪切到一个文件夹中。。。

接着,采用的方法有哪些呢?这里会说三种,快捷键、鼠标拖及命令行。

ok,here we go.

1.假设,已经选中需求的两个文件,可以按“command + c”,进行拷贝,简单,是吧,然后进入想要被放入的文件夹,这时,可以按“command + v”进行粘贴,完成复制过程,如果是希望把拷贝的文件剪切过来,那么在此可以按“option + command + c”

2.假设,已经选中需求的两个文件,并且打开了find中想要被放入的文件夹,这时,鼠标拖动选中的两个文件到目标文件夹,完成复制功能,如果鼠标拖动选中的两个文件并按住“command”到目标文件夹,那么完成剪切功能

3.打开Terminal

// 首先看一眼当前所在地
porrys-MacBook-Pro:Documents porry$ pwd
/Users/porry/Documents

// 复制单个桌面文件到当前目录,请一定要注意后面的点,那是指当前的目录
porrys-MacBook-Pro:Documents porry$ cp ../Desktop/n.mp4 .

// 复制多个文件到当前目录
porrys-MacBook-Pro:Documents porry$ cp ../Desktop/n.mp4 ../Desktop/UI_Pro.doc .

// 关于cp更多的使用
porrys-MacBook-Pro:Documents porry$ cp h
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory

// 剪切与复制的用法基本一致
porrys-MacBook-Pro:Documents porry$ mv ../Desktop/n.mp4 .

 

最后,关于以上的方法,知道者都很容易,但这个文章却是写给不知的朋友来知晓。。:)

Sublime高亮Jade

Sublime text 2感觉是个蛮好用的编辑工具,嘿嘿,unregistered,M童找到一个可以高亮显示jade语法的方法。

首先,我们得要知道Sublime text 2的目录在哪里,然后找到Packages,才可以进行操作,好的,让我们打开Terminal

porrys-MacBook-Pro:~ porry$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/
 
porrys-MacBook-Pro:Sublime Text 2 porry$ ls
Installed Packages	Packages		Pristine Packages	Settings
 
porrys-MacBook-Pro:Sublime Text 2 porry$ cd Packages/
 
porrys-MacBook-Pro:Packages porry$ mkdir -p Jade
 
porrys-MacBook-Pro:Packages porry$ cd Jade/
 
porrys-MacBook-Pro:Jade porry$ curl -0 https://raw.github.com/miksago/jade-tmbundle/master/Syntaxes/Jade.tmLanguage

 

有关jade-tmbundle可以查看https://github.com/miksago/jade-tmbundle

经过以上命令行后,再返回Sublime text 2中查看jade文件,一切都有语法的颜色,这也得要重新适应一下。呵呵。。

无法加载本地SWF

用Flash Builder4.5.1发布了一个加载本地文件夹中的SWF文件,运行发现报错“Local-with-filesystem and local-with-networking SWF files cannot load each other.”,查后,知,可在当前工程属性的编译条件中加入-use-network=false

Mac中显示隐藏文件

在Mac的Finder中,默认情况是不显示所有“.”开始的隐蔽文件,开启显示的方法,请在Terminal中输入

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

当希望关闭,请将上面的命令中的TRUE改为FALSE

关于ActionScript Project中Preloader的解决

在使用Flex建立as的Project后,总是会希望显示出加载的进度,用loaderInfo的ProgressEvent来监听是不成功的,那么可参照以下方法,来实现AS应用的两桢法。

首先,建立了一个ImageGrallery的Project,其中包括ImageGrallery.as与AdPlayer.as。

然后,修改当前应用的Compiler,在其中添入“-frames.frame ImageGallery ImageGallery -generate-frame-loader=true”,(About the application compiler options)。

接着,目标是希望AdPlay能加载ImageGrallery,AdPlayer的代码如下:

package
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;
 
	public class AdPlayer extends MovieClip
	{
		private var preText: TextField;
		public function AdPlayer()
		{
			stop();
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
 
			preText = new TextField();
			addChild(preText);
 
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		public function onEnterFrame(event:Event):void
		{
			graphics.clear();
 
			if (framesLoaded == totalFrames) {
				removeEventListener(Event.ENTER_FRAME, onEnterFrame);
				removeChild(preText);
				preText = null;
				nextFrame();
				onInit();
			} else {
				var percent: Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
 
				preText.textColor = 0xFFFFFF;
				preText.text = (percent * 100).toFixed() + " %";
 
				preText.x = (stage.stageWidth * percent - preText.textWidth) / 2;
				preText.y = (stage.stageHeight - preText.textHeight) / 2;
 
				graphics.beginFill(0);
				graphics.drawRect(0, stage.stageHeight / 2 - 10, stage.stageWidth * percent, 20);
				graphics.endFill();
			}
		}
 
		private function onInit() : void {
			var playerClass: Class = Class(getDefinitionByName("ImageGallery"));
			if (playerClass) {
				var playerInstance: Object = new playerClass();
				addChild(playerInstance as DisplayObject);
			}
		}
	}
}

设置AdPlayer.as为Default Application,运行后,嘿嘿,OK了。(运行

注:如果想用ImageGrallery为主应用程序,那么ImageGrallery的程序可以如下:

package
{
	import com.biztv.player.PlayerContext;
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	[Frame(factoryClass="AdPlayer")] // 此处为关键
	public class ImageGallery extends Sprite
	{
		protected var context: PlayerContext;
 
		public function ImageGallery()
		{
			addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
		}
 
		private function onAddedToStage(event: Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);		
			initialize(this);
		}
 
		public function initialize(own: Sprite=null):void {
			removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
 
			context = new PlayerContext(own); // 此处使用robotlegs框架
		}
	}
}

Mac 蓝屏时间长

近来,MAC启动时,蓝屏时间很长,并且偶而进入系统后,一副死机什么都不能点的样子,等长久会儿,系统才算正常,使用起来也没有什么问题,但是如此开机着实让人头痛。

查于网络http://discussions.apple.com/thread.jspa?threadID=1764166也有说到这个问题,大家把问题指向了fireware,可使用的解决方法为“sudo rm -r /System/Library/Extensions/IOFireWire*”。

执行后,果然系统蓝屏时间很短,如果系统更新后,上面的解决方法,可能还得要执行,呵呵。

window.parent.frames

当window.parent.frames(“frmTop”)在FireFox会报错显示“window.parent.frames is not a function”,可将window.parent.frames(“frmTop”)改为window.parent.frames[0]就OK了。

因为frames是个array。

document.all

在IE中document.all 是被支持的,但是在Firefox中document.all会报document.all is not a function,呵呵,简单的将all改为getElementById就OK了。

 

    <input type="text" id="txtUserCode"/>
 
    <script language="javascript">
      <!--
      if (document.getElementById("txtUserCode").value == "") {
        document.getElementById("txtUserCode").focus();
        document.getElementById("txtUserCode").select();
      }
 
      //-->
    </script>

如何增加VirtualBox虚拟机硬盘大小

在MAC上,我安装好VirtualBox,想在其上装一个Win7,初始化好虚拟系统后,才理会到其自增长硬盘大小,不会超过其初始时的20G,VirtualBox提供了可以为虚拟系统再增加虚拟硬盘,可以我却希望改其现有虚拟硬盘的大小,google后,寻得可以使用的方法,嘿嘿,一阵欣喜。

 

首先通VirtualBox创建一块动态增长的,大小为80G的虚拟硬盘,名称为Win7Disk1.vdi,然后打开Terminal使用VBoxManage命令复制原虚拟系统的硬盘Win7.vdi的内容到新硬盘中:

MacBook-Pro:~ porry$ VBoxManage clonevdi /Users/porry/VirtualBox/Win7/Win7.vdi /Users/porry/VirtualBox/Win7/Win7Disk1.vdi --existing
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a55fc5bd-4b2e-4158-b120-43b51128a2d2

 

成功复制后,进入VirtualBox,将虚拟系统中的硬盘指定为新硬盘Win7Disk1.vdi,嘿嘿,点击Start,运行虚拟系统,有些紧张能不能运行,OK,进行系统,打开资源管理器,汗,发现显示大小依旧为20G,心慌了一下,进入磁盘管理,发现多出一个60G的磁盘空间,试着扩展C盘,笑,一切顺利,C盘已经变为80G。