witcheryne 写道
kidneyball 写道
witcheryne 写道
好吧,为了方便墙内朋友,我把WS6 的 LiveEdit演示视频转到 http://video.sina.com.cn/v/b/109112650-1405299693.html 了。但这一版的演示视频没有直接用html+css+js,而是用了jade (http://jade-lang.com/) +sass (http://sass-lang.com/)+coffiescript (http://coffeescript.org/),用js的情况大致相同。这一版还对这三种语言做了个即时编译。另外演示中使用了 angularJS ( http://angularjs.org/ ) 这个客户端MVC框架。留意屏幕右边是个chrome,你在WS里敲代码,chrome就会自动刷新进行预览。
Live Edit 有用过么? 从服务访问的页面怎么做live edit ?
RequireJS 模块跳转是不是需要 plugins 支持?
目前我只在用客户端MVC配restful服务返回json时用live edit。我现在公司的主项目是jsf的,页面和响应代码不同步,做纯服务端项目时用不了live edit。如果是普通的服务端,可以试试在debug configuration那里配好服务器,从intellij内部启动服务器进行客户端调试。
RequireJs我好像没特别装插件就能用呀,明天回公司确认一下。例如在require(['模块名称'], function...) 的模块名称上按gd (装了vim插件)就能直接跳到对应的js文件。
Live Edit 在 server 环境下好像不好做。 我的server是内嵌的jetty。平时开ruby开发. 在edit configuration中都没找到这两个运行环境。
require js我试了, 装了vim插件,gd直接到定义。 我在requirejs中对folder做了alias,使用alias路径不能跳转。
刚试了试,几个功能很棒:
1. vim插件在webstorm下运行神速
2. html编辑器有xpath导航,比outline这种东西直观很多.
3. 支持textmate tab -> template 这点很棒。
最近在做ipad项目,前端做的不多,以后这方面有瓶颈了,可以搞一个.. 现在个人版好像45美刀.
我又想了一下,Live Edit应该是不支持服务器端的。你留意一下,Live Edit生效时不会导致整个页面刷新。Intellij应该是通过chrome插件把DOM树结构跟正在编辑文件的语法树结构挂钩来实现局部刷新。这个动作如果要在编辑过程中实时对服务器的响应流来做,估计性能跟不上,理论上也很难分离出改动部分。
对于服务器上的项目,其实我们通常只需要一个全局的浏览器刷新热键,省下先激活浏览器,再按F5,再回到IDE这套步骤。我实际工作中是用AutoHotKey来实现的 (只支持Windows,Mac下估计有类似的软件)。下面是我常用的AutoHotKey脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode RegEx
;===========================
;Helpper Functions
;===========================
GUID() ; 32 hex digits = 128-bit Globally Unique ID
{
VarSetCapacity(bGuid, 16,0)
VarSetCapacity(sGuid, 76)
dllcall("ole32.dll\CoCreateGuid", uint, &bGuid)
x := dllcall("ole32.dll\StringFromGUID2", "uint", &bGuid, "str", sGuid, "int", 76)
Loop 76
UUID .= (Mod(A_Index,2) = 1) ? Chr( *(&sGuid+(A_Index-1)) ) : ""
return UUID
}
;===========================
;Programming Settings
;===========================
::]date:: ; 输入]date自动转为当前时间 (用于调试时加入临时标记)
FormatTime, CurrentDateTime,, M/d/yyyy h:mm:ss tt ; It will look like 9/1/2005 3:53 PM
SendInput %CurrentDateTime%
return
::]rand:: ; 输入]rand自动转为随机数
Random rand,0,99999999999999
SendInput %rand%
return
::]guid:: ; ; 输入]guid自动在当前位置插入一个GUID
x := GUID()
SendRaw % x
return
!F5:: ; Alt+f5 Open a node script console.
Run node
return
!F6:: ; Alt+f6 open a scala script console.
Run scala
return
!F7:: ; Alt+f7 open a irb console.
Run irb
return
^!r:: ; Ctrl+Alt+R 刷新FireFox
; Save current window
WinGet, original, , A
; ---------------------------------------
; Refresh Firefox
Process, Exist, firefox.exe
If(ErrorLevel) {
WinActivate, ahk_pid %ErrorLevel%
Send {F5}
}
; Refresh Chrome
;Process, Exist, chrome.exe
; If(ErrorLevel) {
; WinActivate, ahk_pid %ErrorLevel%
; Send {F5}
; }
; Refresh Internet Explorer
;Process, Exist, iexplore.exe
; If(ErrorLevel) {
; WinActivate, ahk_pid %ErrorLevel%
; Send {F5}
; }
; ---------------------------------------
; Return to original window
WinActivate ahk_id %original%
return
在任何地方按Ctrl+Alt+R都可以刷新FireFox并跳回当前窗口