文档章节

服务端和客户端的代码重用(coffeescript)

起名字凡人
 起名字凡人
发布于 2015/12/08 11:13
字数 334
阅读 23
收藏 0

问题

当你在 CoffeeScript 上创建了一个函数,并希望将它用在有网页浏览器的客户端和有 Node.js 的服务端时。

解决方案

以下列方法输出函数:

# simpleMath.coffee# these methods are privateadd = (a, b) ->
    a + bsubtract = (a, b) ->
    a - bsquare = (x) ->
    x * x# create a namespace to export our public methodsSimpleMath = exports? and exports or @SimpleMath = {}# items attached to our namespace are available in Node.js as well as client browsersclass SimpleMath.Calculator
    add: add    subtract: subtract    square: square

讨论

在上面的例子中,我们创建了一个新的名为 “SimpleMath” 的命名空间。如果 “export” 是有效的,我们的类就会作为一个 Node.js 模块输出。如果 “export” 是无效的,那么 “SimpleMath” 就会被加入全局命名空间,这样就可以被我们的网页使用了。

在 Node.js 中,我们可以使用 “require” 命令包含我们的模块。

$ node

> var SimpleMath = require('./simpleMath');undefined> var Calc = new SimpleMath.Calculator();undefined> console.log("5 + 6 = ", Calc.add(5, 6));5 + 6 =  11undefined>

在网页中,我们可以通过将模块作为一个脚本嵌入其中。

<!DOCTYPE HTML><html lang="en-US"><head>
    <meta charset="UTF-8">
    <title>SimpleMath Module Example</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="simpleMath.js"></script>
    <script>
        jQuery(document).ready(function    (){            var Calculator = new SimpleMath.Calculator();            var result = $('<li>').html("5 + 6 = " + Calculator.add(5, 6));
            $('#SampleResults').append(result); 
        });    </script></head><body>
    <h1>A SimpleMath Example</h1>
    <ul id="SampleResults"></ul></body></html>

输出结果:

A SimpleMath Example

· 5 + 6 = 11


© 著作权归作者所有

共有 人打赏支持
起名字凡人
粉丝 1
博文 12
码字总数 20854
作品 0
海淀
私信 提问
初探 CoffeeScript

上周末我去参加了Java开发者大会讨论了几个非常有意思的话题。有名演讲者谈到了Underscore,当时他使用的演示都是基于CoffeeScript完成的。我以前与CoffeeScript这玩意有过一面之缘,但经过他...

junwong
2012/04/18
4.1K
15
初探 CoffeeScript

上周末我去参加了 Java开发者大会讨论了几个非常有意思的话题。有名演讲者谈到了 Underscore,当时他使用的演示都是基于 CoffeeScript完成的。我以前与CoffeeScript这玩意有过一面之缘,但经...

彭博
2012/11/27
177
1
我为什么不从NodeJS切换到Go

2014年3月26日 我最近研究并玩了一下Go语言,并且我想简短地谈一下为什么我不准备从Node切换到GO。(并且我建议你也不要这么干) 首先,人们在讨论Node.js时会有很多的抱怨: 回调地狱 Promis...

Kris_zcl
2014/03/31
7.9K
6
CoffeeScript 1.8 发布啦~

CoffeeScript 1.8 发布啦,现已提供下载,更新内容如下: The --join option of the CLI is now deprecated. Source maps now use .js.map as file extension, instead of just .map. The C......

oschina
2014/08/28
3.1K
15
CoffeeScript 2.0.0-beta5 发布,编译成 JS 的小巧语言

CoffeeScript 2.0.0-beta5 已发布了,更新如下: 升级文档至 Bootstrap 4 beta,包括重构样式;还升级了文档 jQuery 和 CodeMirror 针对移动端,提供更好的文档样式,包括 Try CoffeeScript...

局长
2017/09/04
495
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机系统要素 C5

本章值得一提的是组织计算机的结构。Hack 的指令和数据是分开存储的,因此它的 CPU 有两个 input: IN inM[16], // M value input (M = contents of RAM[A]) instruction[16],...

lionets
25分钟前
0
0
SpringSecurity404需要注意的地方

在使用@RequestMapping的时候路径的值如果写为("auth"),虽然用的时候前面加不加"/"没有区别,但是在配置了SpringSecurity的http.authorizeRequests().antMatchers()时就必须要注意了! 🌰1...

百萬馬力
28分钟前
1
0
10分钟读懂阿里巴巴高级专家在Flutter Live2018的分享

作者:闲鱼技术-宗心 12月4日,google flutter团队宣布第一个flutter正式版本发布。次日,Flutter Live Beijing 会议上,google flutter团队邀请了在这一技术方案中重要的合作伙伴闲鱼团队分...

阿里云官方博客
29分钟前
2
0
RxJava window操作符

原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%204%20-%20Concurrency/3.%20Sequences%20of%20coincidence.md Sequences of coincidence Rx试图避免管道(pipeline)外......

woshixin
36分钟前
3
0
05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》

本期视频实现了博客的详情页面; 内容简介:使用了标签函数layout完成详情功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK #标签函数 layo...

Gavin-King
37分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部