2015年5月30日星期六

日子过得很漫长

要在windows上搞node,各种坑。好不容易搞成了,记录下来。

1.node要安装 v0.10.36,11后的版本去掉了v8,各种node-gyp编译不过,比如ws,socket.io。
2.-g 安装gulp后,在项目目录下再次执行npm install --save-dev gulp还是没有用,得自己手动安装一堆
npm install gulp-angular-templatecache gulp-filter gulp-jshint gulp-load-plugins gulp-ng-annotate gulp-replace gulp-rev gulp-rev-replace gulp-useref gulp-minify-html gulp-flatten
这个命令会检查依赖,然后安装
3.安装vs2005没过去,还是vs2013才过去,就为了一个msbuild。

2015年5月27日星期三

yeoman的默认generator产生的目录结构

yo默认的generator是generator-angular,它产生的目录结构我的确是不喜欢,所谓的view都在一个目录下,然后所有的js在一个目录script下,scripts目录下分controllers,directives,services这样子,估计和ruby一样走的模式。但是这导致了一个问题,内容多了后,根据一个view要去找到自己的controller真的麻烦,还是喜欢mvc自己在自己的目录里。
拜google,找到了这个文章 ,看来大家都有这个想法。
目前找到两个指导风格
https://github.com/johnpapa/angularjs-styleguide :
└── app
    ├── app.module.js
    ├── app.config.js
    ├── app.routes.js
    ├── components       
    │   ├── calendar.directive.js  
    │   ├── calendar.directive.html  
    │   ├── user-profile.directive.js  
    │   └── user-profile.directive.html  
    ├── layout
    │   ├── shell.html      
    │   ├── shell.controller.js
    │   ├── topnav.html      
    │   └── topnav.controller.js
    ├── people
    │   ├── attendees.html
    │   ├── attendees.controller.js  
    │   ├── speakers.html
    │   ├── speakers.controller.js
    │   ├── speaker-detail.html
    │   └── speaker-detail.controller.js
    ├── services       
    │   ├── data.service.js  
    │   ├── localstorage.service.js
    │   ├── logger.service.js   
    │   └── spinner.service.js
    └── sessions
        ├── sessions.html      
        ├── sessions.controller.js
        ├── session-detail.html
        └── session-detail.controller.js  

https://github.com/mgechev/angularjs-style-guide :
├── app
│   ├── app.js
│   ├── common
│   │   ├── controllers
│   │   ├── directives
│   │   ├── filters
│   │   └── services
│   ├── home
│   │   ├── controllers
│   │   │   ├── FirstCtrl.js
│   │   │   └── SecondCtrl.js
│   │   ├── directives
│   │   │   └── directive1.js
│   │   ├── filters
│   │   │   ├── filter1.js
│   │   │   └── filter2.js
│   │   └── services
│   │       ├── service1.js
│   │       └── service2.js
│   └── about
│       ├── controllers
│       │   └── ThirdCtrl.js
│       ├── directives
│       │   ├── directive2.js
│       │   └── directive3.js
│       ├── filters
│       │   └── filter3.js
│       └── services
│           └── service3.js
├── partials
├── lib
└── test


后来我打算安装文章最后提到的generator-ng-poly
根据介绍,Inspired by John Papa's Angular Style Guide and Todd Motto's AngularJS styleguide

安装
npm install -g ng-poly gulp
ng-poly用的gulp来打包,不是用grunt了,少了io速度上前进了一步。
然后去
cd D:\WebProjects,不用先建项目的目录了。
yo ng-poly,这里会问你要建立的项目的名字,然后会根据你的名字建立目录。这里我回退了node的版本为0.11.16,因为的确0.12时会hang在home.css上,但是回退了还是没用,结果一样挂了。直接ctrl+c算了。


http://blog.jobbole.com/78946/

2015年5月10日星期日

Yeoman的generate-angular产生的目录的删除

在mac上自然直接rm,windows上却远远超过了最长path的限制,怎么都删不掉。后来google,发现可以这样删
比如要删除
D:\WebProjects\YeomanTest
用下面的手法删
cd D:\WebProjects
md a
robocopy  a YeomanTest /mir,这里会执行比较长时间,mir会将源a镜像到目的YeomanTest,所以会清除YeomanTest目录下的东西,从而达到删除的目的。
rd a
rd /s  YeomanTest

今天找到一个新的法子,远比robocopy来的快。
既然node_modules是在node里面创建出来,就在node里面删,方法如下:
先安装rimraf
npm install rimraf -g
然后执行
rimraf D:\WebProjects\YeomanTest就可以了,瞬间删除。 

yo angular要跑好大半天,难道每次都去执行一下?太慢了。想在本地copy目录,robocopy(robocopy YeomanTest YemanTest2 /mir) 也跑了好大半天,所以还是在node里面执行来的快。
npm install ncp -g
ncp YeomanTest YeomanTest2,这里虽然也会跑很久,但是比起从网上下载再untar要快不少了。

 

2015年5月8日星期五

angular的mac

1。安装nodejs,没有直接去nodejs.org下载再安装,版本变化频繁,还有就是下载二进制安装是root。用了nodebrew,比起homebrew,感觉这个用来管理nodejs的版本以及切换版本都很方便。 并且也都在非root下操作。
安装nodebrew
curl -L git.io/nodebrew | perl - setup,安装nodebrew后需要修改环境变量export PATH=$HOME/.nodebrew/current/bin:$PATH
安装 node
nodebrew install-binary latest
然后看一下安装了啥
nodebrew ls
然后使用安装的版本
nodebrew use v0.12.2
可以使用了
Jacky-Air:~ jacky$ node -v
v0.12.2
Jacky-Air:~ jacky$ npm -v
2.7.4

2。安装ruby的bundler和compass
要用 css的Scss,先更新一下ruby的gem。
Jacky-Air:~ jacky$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
Jacky-Air:~ jacky$ gem -v
2.4.1
Jacky-Air:~ jacky$ sudo gem update --system
Jacky-Air:~ jacky$ gem -v
2.4.6
Jacky-Air:~ jacky$ sudo gem install bundler
Jacky-Air:~ jacky$ bundler -v
Bundler version 1.9.6
Jacky-Air:~ jacky$ sudo gem install compass
Jacky-Air:~ jacky$  compass -v
Compass 1.0.3 (Polaris)


3。bower用了git,git默认有了
Jacky-Air:~ jacky$ git --version
git version 1.9.3 (Apple Git-50)
安装Yeoman
Jacky-Air:~ jacky$ npm install -g  bower grunt-cli yo
Jacky-Air:~ jacky$ yo --version
1.4.6
Jacky-Air:~ jacky$ grunt  --version
grunt-cli v0.1.13
这里目前还看不见grunt的版本,要看grunt的版本,得到项目的目录下执行。
Jacky-Air:~ jacky$ bower --version
1.4.1

4。安装npm install -g generator-angular
然后去自己的目录下,建项目
Jacky-Air:YeomanTest jacky$ pwd
/Users/jacky/Projects/YeomanTest
Jacky-Air:YeomanTest jacky$ yo angular
这里下载东西多,会搞很久

5。到这里一个项目的样子就出来了,剩下的是自己开发了。
运行一下grunt serve,访问localhost:9000可以看到内容了

用grunt来打包前端项目很是方便,配置文件为Gruntfile.js,但是和普通的grunt相比,yeoman将grunt的依赖也交给了bower管理,所以目录下会有bower.json文件,当然nodejs的package.json也是必须的。 使用了yeoman,将grunt的门槛降低了不少,不用自己配置Gruntfile.js也不必自己去下载一堆grunt-contrib插件了。