学习到这里,可以说 Python 基础学习基本接近尾声了。 目录
这里包括 Nunjuck 所有可用的功能。 Nunjucks 是 jinja2 的 javascript 的实现,所以如果此文档有什么缺失,你可以直接查看 jinja2 的文档,不过两者之间还存在一些差异。 文件扩展名 虽然你可以用任意扩展名来命名你的Nunjucks模版或文件,但Nunjucks社区还是推荐使用.njk。 如果你在给Nunjucks开发工具或是编辑器上的语法插件时,请记得使用.n
我们自己实现了一个轻量级的模板引擎,不要问为什么不用smart之类的,因为我们认为没有必要为了一个小小的模板引擎而引入smaart这样复杂的实现。你可能会说,smart功能强大,支持各种标签,标签也是很强大,而且还可以对模板引擎进行各种"灵活"的配置... 这里我们觉得有必要说明一下: 框架的内置模板引擎基本上实现了我们日常开中所有常用的标签。 不常用的标签我们也做了巧妙的实现。 我们只提供了扩展
问题 解决问题的方式有多种,但是你需要在程序运行时选择(或是转换)这些方法。 解决方案 在策略对象(Strategy objects)中封装你的算法。 例如,给定一个未排序的列表,我们可以在不同情况下改变排序算法。 基类 StringSorter = (algorithm) -> sort: (list) -> algorithm list 策略 bubbleSort = (list) -
问题 许多时候你想要一个,并且只要一个类的实例。比如,你可能需要一个创建服务器资源的类,并且你想要保证使用一个对象就可以控制这些资源。但是使用时要小心,因为单件模式可以很容易被滥用来模拟不必要的全局变量。 解决方案 公有类只包含获得一个实例的方法。实例被保存在该公共对象的闭包中,并且总是有返回值。 这很奏效因为 CoffeeScript 允许你在一个类的声明中定义可执行的状态。但是,因为大多数 C
问题 你有一组数据,需要在多个过程、可能变换的方式下处理。 解决方案 使用修饰模式来构造如何更改应用。 miniMarkdown = (line) -> if match = line.match /^(#+)\s*(.*)$/ headerLevel = match[1].length headerText = match[2] "<h#{
问题 你需要让另一个对象处理你自己的可执行的代码。 解决方案 使用 Command pattern 传递函数的引用。 # Using a private variable to simulate external scripts or modules incrementers = (() -> privateVar = 0 singleIncrementer = () ->
问题 你需要为代码保持一个可靠的接口,可以经常变化或者在多种实现间转换。 解决方案 使用桥接模式作为不同的实现和剩余代码的中间体。 假设你开发了一个浏览器的文本编辑器保存到云。然而,现在你需要通过独立客户端的端口将其在本地保存。 class TextSaver constructor: (@filename, @options) -> save: (data) -> class
在先前的 Templates 章節中,我們已經學會基礎的 Django Template 用法 (在 Template 裡呈現變數內容)。但為了產生完整的網頁,我們會需要能在 Template 裡執行一些簡單的 Python 語法,例如: 邏輯判斷 (if-else) -- 若使用者己經登入,則顯示使用者的暱稱;若未登入,則顯示登入按鈕 重覆 HTML 片段 (for loop) -- 列出所有好
为方便开发者,SDK引入了本地调试和在线调试功能,开发者可以结合使用。 本地调试 为了方便开发者进行调试,SDK支持打开调试开关查看logcat日志数据: 1)调试开关 // 开发时调用,建议上线前关闭,以免影响性能 StatService.setDebugOn(true); 2)测试 3.9.0.0及之后版本,SDK对logcat日志做了规范优化,使得开发者可以更清晰的阅读日志。可以通过 ad
内建的 <template> 元素用来存储 HTML 模板。浏览器将忽略它的内容,仅检查语法的有效性,但是我们可以在 JavaScript 中访问和使用它来创建其他元素。 从理论上讲,我们可以在 HTML 中的任何位置创建不可见元素来储存 HTML 模板。那 <template> 元素有什么优势? 首先,其内容可以是任何有效的HTML,即使它通常需要特定的封闭标签。 例如,我们可以在其中放置一行表
简介 享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。 典型的享元模式的例子为文书处理器中以图形结构来表示字符。一个做法是,每个字形有其字型
简介 在面向对象程式设计的范畴中,命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来,于是这些行动可以被: 重复多次 取消(如果该物件有实作的话) 取消后又再重做 这些都是现代大型应用程序所必须的功能,即“复原”及“重复”。除此之外,可以用命令模式来实作的功能例子还有: 交易行为 进度列 精灵 使用者界面按钮及功能表项目 执行绪 pool 宏收
简介 桥接模式把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。 如果有一个N品牌的手机,它有个小游戏,我要玩游戏,程序应该如何写? //N品牌的手机中的游戏 class HandSetNGame { public vo
简介 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 实现单例模式的思