js中WebStorm编写CoffeeScript的编译问题

写过Python或者Ruby的朋友,应该都喜欢上CoffeeScript,如果不太熟悉CoffeeScript的朋友可以到官网补补课coffeescript.org

相信用了CoffeeScript后你就不会再想回去写JavaScript的,WebStorm对CoffeeScript支持的非常好,就如同它对Nodejs支持一样出色,利用它的File Watchers功能加上coffee.cmd即可轻松在编写CoffeeScript时即时编译出JavaScript文件,这里要说说在WebStorm中设置File Watchers遇到到问题。按照官网的提示,需要先安装nodejs,然后再安装CoffeeScript

npm install -g coffee-script

安装后,在命令行下即可使用coffee命令进行编译,然而这在WebStorm中设置编译命令为coffee的时候总是报错

编译报错提示:

然而,你在命令行的情况下使用coffee去编译一个文件时没有任何问题的

helloword.coffee的内容:

console.log "hello word!"

编译:

C:Userszhong>coffee -c helloword.coffee

编译后的helloword.js文件内容:

// Generated by CoffeeScript 1.8.0
(function() {
  console.log("hello word!");

}).call(this);

于是,为了得到一个coffee.cmd,最常见的方法是在项目下新建一个package.json文件,在package.json文件里写上:

{
    "name": "application-name",
    "version": "0.0.1",
    "dependencies": {
        "coffee-script" : "*"
    }
}

在执行npm install后得到一个node_modules目录,在node_modules目录的.bin目录下就有一个coffee.cmd文件

然后我们把这个文件的路径设置在File WatchersProgram的值就好

这样就可以在WebStorm编译正在编写的CoffeeScript脚本程序了。

其实,我更愿意使用Grunt来替代它,用Grunt不仅设置方便,而且管理,移植到其它PC中更为方便,更重要的它弥补的WebStorm并且WebStorm对它支持很好。在WebStorm中你无法把多个文件concat以后再compile,而在Grunt这一切都很好容易设置。实际上WebStorm编辑功能很牛逼了,再结合Grunt这样的牛逼的构建工具,可以说开发起来非常的得心应手。在WebStorm中甚至自动识别你是否有Gruntfile.js文件然后给你一个选项,你只需要点击既可以执行某个命令:

其实,CoffeeScript在调试方面还是一个苦痛,目前Chrome对CoffeeScript的调试已经做的非常友好了,然后有几个要命的问题迫切需要得到解决

首先是断点问题,如果你做Web端,你需要断点的地方是刷新才运行的,于是你设置断点刷新后断点就不见了,目前最土的做法就是在断点的地方弄到一个func里,完了在console里直接调用func。

其次是监控变量,比如你要监控的表达式fn augr,然而你监控里是得到的语法是错误的,这就有点郁闷的了,断点的文件时CoffeeScript,获取监控的变量却不支持CoffeeScript语法。

最后是编译问题,CoffeeScript编译出来的JavaScript都tab=2缩进,这在compile时却没有找到设置tab大小的选项。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 编译
, 文件
, 监控
, coffeescript
断点
coffeescript编译js、coffeescript编译、coffeescript 编译器、webstorm coffee、webstorm script path,以便于您获取更多的相关知识。

时间: 2024-10-28 06:49:30

js中WebStorm编写CoffeeScript的编译问题的相关文章

JS中cookie的编写,获取,删除,急求

问题描述 java语言编写的js中如何编写,获取,删除cookie 解决方案 解决方案二:好像JavaScript应该没有提供这个类来获取,当然删除就不用说了.在servlet里面就可以.在servlet里客户端一发出请求,你可以用以下方法:Cookie[]ck=getCookies();//获取客户端里的cookie,因为浏览器一般不止保存一个Cookie,所以用数组来获取,在进行遍历,遍历一个就判断一个,是不是你所要的Cookie.如果找到是你所要的,就返回一个String类型的key值,再

用NODE.JS中的流编写工具是要注意的事项_node.js

Node.js中的流十分强大,它对处理潜在的大文件提供了支持,也抽象了一些场景下的数据处理和传递.正因为它如此好用,所以在实战中我们常常基于它来编写一些工具 函数/库 ,但往往又由于自己对流的某些特性的疏忽,导致写出的 函数/库 在一些情况会达不到想要的效果,或者埋下一些隐藏的地雷.本文将会提供两个在编写基于流的工具时,私以为有些用的两个tips. 一,警惕EVENTEMITTER内存泄露 在一个可能被多次调用的函数中,如果需要给流添加事件监听器来执行某些操作.那么则需要警惕添加监听器而导致的内

如何编写网页代码从而获取js中某个文本框的value??

问题描述 <formid="virtualTollFreeUserForm"method="post"action="http://www.voxalot.com/action/virtualTollFreeUser"><inputtype="hidden"name="task"value="call"/><inputtype="hidden&qu

js中写入信息,在html中读取时出现问题

问题描述 js中写入信息,在html中读取时出现问题 我的js代码是 var arr = [ { id: 0, name: "张三", department: "外科", image:"/images/doctor.png" }, { id: 1, name: "张三", department: "外科", image:"/images/doctor.png" }, { id: 2, n

关于在 Node.js 中引用模块,知道这些就够了

本文讲的是关于在 Node.js 中引用模块,知道这些就够了, Node 提供了两个核心模块来管理模块依赖: require 模块在全局范围内可用,不需要写 require('require'). module 模块同样在全局范围内可用,不需要写 require('module'). 你可以将 require 模块理解为命令,将 module 模块理解为所有引入模块的组织者. 在 Node 中引入一个模块其实并不是个多么复杂的概念. const config = require('/path/t

js中自定义方法实现停留几秒sleep_javascript技巧

js中不存在自带的sleep方法,要想休眠要自己定义个方法 function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } 以下是补充: 除了Narrative JS,jwacs(Javascript With Adv

js中与变量相关的一些知识

来补充一点上一篇文章 js变量初探 中漏掉的知识点: 1.变量的定义与声明中常见问题: (1)用var关键字声明的变量,未经初始化时,保存的是一个特殊的值-undefined,变量初始化仅仅是给变量赋一个值 (2)当使用var关键字声明了一个变量时,创建的这个变量是不可配置的,也就是说这个变量无法通过delete运算符删除:在严格模式下,使用delete运算符删除var关键字声明的变量会导致SyntaxError. (3)省略var关键字会导致定义一个全局变量,但是不推荐这种做法.在严格模式下,

在js中加html注释的作用?

问题描述 在js中加html注释的作用? <!-- function getStringLength(str){ var num=0; if (str!=""){ var i; var s; for(i=0;i<str.length;i++){ s=str.charCodeAt(i); if(s-128<0) num=num+1; else num=num+2; } } return num; } //--> 解决方案 就是说这些代码本来应该删除,但是这个程序员

ASP.NET 2.0 中的代码隐藏和编译

asp.net|编译 代码隐藏 虽然该代码隐藏模型在 2.0 中是不同的,但是它的语法已经进行了少量更改.实际上,该更改十分细微,如果您不仔细查看,甚至都无法注意到它Figure 1 Syntax in ASP.NET 2.0 Default.aspx<%@ Page Language="C#" AutoEventWireup="true"     CodeFile="Default.aspx.cs" Inherits="Msdn