官术网_书友最值得收藏!

Fulfilling the functional requirements

We've described the semantic structure of our application with HTML. We have defined with CSS how our UI elements shall look. Now, we will teach our application to retrieve and update the content as well as to respond to user events. Actually, we will allocate the following tasks to several modules:

  • DirService: This provides control on directory navigation
  • FileService: This handles file operations
  • FileListView: This updates the file list with the data received from DirService, handles user events (open file, delete file, and so on) using FileService
  • DirListView: This updates the directory list with the data received from DirService and handles navigation events using DirService
  • TitleBarPath: This updates the current location with the path received from DirService
  • TitleBarActions: This handles user iteration with title bar buttons
  • LangSelector: This handles user iteration with language selector

However, before we start coding, let's see what we have in our arsenal.

NW.js gets distributed together with the latest stable version of Node.js, which has a great support for ES2015/ES2016 (http://node.green). It means that we can use any of the inherent new JavaScript features, but modules (http://bit.ly/2moblwB). Node.js has its own CommonJS-compliant module loading system. When we request a module by path, for example, require( "./foo" ), the runtime searches for a corresponding file (foo.js, foo.json, or foo.node) or a directory (./foo/index.js). Then, Node.js evaluates the module code and returns the exported type.

For example, we can create a module that exports a string:

./foo.js

console.log( "foo runs" ); 
exports.message = "foo's export";

and another one, which imports from the first module:

./bar.js

const foo = require( "./foo" ); 
console.log( foo.message );

If we run it, we get the following:

$node bar.js
foo runs
foo's export

One should note here that regardless of how many times we require a module, it gets executed just once, and every time, its exports are taken from the cache.

主站蜘蛛池模板: 龙游县| 正阳县| 舞阳县| 海南省| 乐业县| 呼伦贝尔市| 乌拉特中旗| 太保市| 北碚区| 荆门市| 塔城市| 江孜县| 临清市| 布尔津县| 江口县| 乐昌市| 南陵县| 武定县| 阿拉善盟| 宁南县| 游戏| 西峡县| 呈贡县| 玛纳斯县| 邮箱| 东乌| 崇义县| 台江县| 无锡市| 木兰县| 婺源县| 横峰县| 苏州市| 松阳县| 嘉善县| 界首市| 卓资县| 阿城市| 抚松县| 霍林郭勒市| 洞口县|