文档章节

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

起名字凡人
 起名字凡人
发布于 2015/12/08 11:13
字数 334
阅读 23
收藏 0
点赞 0
评论 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
海淀
Atom飞行手册翻译: 3.1 ~ 3.2

现在是时候来介绍在这一Hackable的编辑器中,真正“Hackable”的部分了。像我们在整个第二章中看到的那样,Atom中很大一部分都由一大堆包组成。如果你想向Atom中添加一些功能,你必须要访问和...

apachecn_飞龙 ⋅ 2015/08/03 ⋅ 0

CoffeeScript 2.3.0 发布,JavaScript 转译语言

CoffeeScript 2.3.0 发布,此次更新信息如下: 将分析初始化移入 docs.coffee 更新 CodeMirror 样式 文档更好的布局,包括自动调整大小的侧栏和主栏 对 Edge 的一些样式进行小修改 更新断开的...

雨田桑 ⋅ 04/30 ⋅ 0

wx-caman——基于 CamanJS 的微信小程序 Canvas 像素级滤镜处理库

做这个项目的初衷是希望能够开发一款不依赖服务端而纯通过客户端渲染为图片添加滤镜的小程序。但是由于微信小程序中的 canvas 组件与 DOM Canvas 元素有较大差异,因此传统的 Canvas 处理库几...

逆葵 ⋅ 06/21 ⋅ 0

CoffeeScript 2.2.4 支持 ES2018 正则表达式 dotall 标志

CoffeeScript 2.2.4 (#5025) 发布。 下载地址 Source code (zip) Source code (tar.gz) 更新 修复#4877:指数运算符(#4881) 支持 ES2018 正则表达式 dotall 标志...

雨田桑 ⋅ 04/01 ⋅ 0

Atom飞行手册翻译: 2.13 基本的自定义

基本的自定义 在我们感受到Atom中所有东西的便利之后,让我们看看如何改进它。可能有一些快捷键你经常使用但是感觉很别扭,或者一些颜色不是十分适合你。Atom具有惊人的灵活性,所以让我们对...

apachecn_飞龙 ⋅ 2015/08/03 ⋅ 0

此生无悔入 TypeScript

↑ 编者按:本文由phodal公众号授权奇舞周刊转载。 想来,我已经用 TypeScript 已经有一段时间了,它可以算得上是前端领域的一门 “平淡生活” 的语言。 平淡生活,我的意思是:生活可以从此...

奇舞周刊 ⋅ 04/26 ⋅ 0

Ozg 点餐系统

ozg 点餐系统 客户端需要设置固定IP,每一个客户端的IP对应服务端数据库client表的一条数据。 Server目录为服务器端: 使用nodejs + sqlite3 + websocket,需要安装的库请查看node_modules目...

ozg ⋅ 2014/08/13 ⋅ 0

【CentOS 7Tomcat配置3】,配置tomcat监听端口为80#180120

hellopasswd --- 配置tomcat监听端口为80 vi /usr/local/tomcat/conf/server.xml Connector port="8080" protocol="HTTP/1.1"修改Connector port="80" protocol="HTTP/1.1" /usr/local/tomc......

hellopasswd ⋅ 01/20 ⋅ 0

java Web中的接口项目:浏览器访问接口地址后返回的是一串加密后的字符串,控制台显示:请求包为空,如何解决才能看到接口中显示的json数据信息?数据转换使用des进行加密和解密的。谢谢

java Web中的接口项目:浏览器访问接口地址后返回的是一串加密后的字符串,控制台显示:请求包为空,如何解决才能看到接口中显示的json数据信息?数据转换使用des进行加密和解密的。谢谢...

llddgg ⋅ 02/28 ⋅ 0

一次与陌生男子结对编程3天的经历

最近,公司的事情越发忙碌起来了,除了需要不断梳理架构团队的规划和进度之外,还要经常北上杭三地跑,平常好不容易有个完整的周末,也都瘫软在沙发上,一动脑就脑壳痛。感觉这种状态很容易让...

小芋头君 ⋅ 05/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部