曲线scala
2013-08-15 09:51
169 查看
前些天看scala,对函数式充满疑惑。心想,scala这么杂,若不干脆找个纯函数式语言来看看。
于是上infoq找了找,发现nodejs最近比较热,单线程高并发WEB架构。那就拿它来试水吧。
当前nodejs最新版本是v0.8.16。简单的看了一下,就是javascript在node环境下,可能干好多好多事情。由于单纯学习起来比较枯燥,于是把express3.3.4安装起来。
又学习下express。
express环境也比较简单,是一个基于nodejs的MVC框架,看过外媒那篇经典的nodejs入门之后,对于express就不会觉得突兀。因为express是在基于简单mvc思想构造下的封装而已。不需要太过于关注其内容。先学习下使用。
首先是跑express
命令行node app 就行了
在选择模板语言的时候考虑了一下,是使用默认jade,还是资料更多的ejs呢。ejs难度不大,套些html就行了。于是转用jade。jade与zen coding相差不大,不过也算是比较好的haml实现。喜欢haml的简洁。不过学习曲线挺陡,自己在tabs跟space上面吃了一些亏。要注意排版,其他的语法糖,记住就行了。
这里给一个简单的jade例子
然后又需要操作数据库,跟nodejs搭配的多是mongodb,自己也下载了一个安装。然后就是学习下mongodb的基本操作。
下面给出一个mongo例子:
然后是写了个网站登录、网站注册、网站注销的demo。
从demo里面也看得出纯手工操作mongodb是比较麻烦的。
于是便把mongoose找来。npm install mongoose 或在package.json里面的dependencies里加mongoose:"*"
然后就是对照mongoose官网翻阅了一翻,先连接mongodb,然后写Schame,然后Model。最后exports出去。这样mongoose的工作就完了。没什么比较麻烦的东西,主要是Schame的定义以及Query查询。
这里给一个Model的例子
又发现网站需要flash操作。于是npm install flashify
整体来说,nodejs、express、mongoose操作都不复杂,主要难点在于集成在一起,js调试比较麻烦,ide我推荐webstorm。然后就是nodejs本身的异步处理,有些异步方法是在不根据代码顺序执行的,有时候需要注意一下,要把依赖异步处理结果的执行步骤,放在异步处理方法体内。这些问题出现在连接数据库,读磁盘等比较费时费力的操作上面。
经过nodejs这一遭,对函数式有了初步的了解。与 java不同,函数式讲究的是返回结果,一个函数就是一个操作集,操作结束,给个结果。是动词,更少的名词,与指令式有本质区别。
学习资料:
mongoose http://mongoosejs.com/index.html
jade语法(英文)http://naltatis.github.io/jade-syntax-docs/
中文jade https://github.com/livereload/livereload-plugins/blob/master/Jade.lrplugin/node_modules/jade/Readme_zh-cn.md
于是上infoq找了找,发现nodejs最近比较热,单线程高并发WEB架构。那就拿它来试水吧。
当前nodejs最新版本是v0.8.16。简单的看了一下,就是javascript在node环境下,可能干好多好多事情。由于单纯学习起来比较枯燥,于是把express3.3.4安装起来。
又学习下express。
express环境也比较简单,是一个基于nodejs的MVC框架,看过外媒那篇经典的nodejs入门之后,对于express就不会觉得突兀。因为express是在基于简单mvc思想构造下的封装而已。不需要太过于关注其内容。先学习下使用。
首先是跑express
命令行node app 就行了
node app
在选择模板语言的时候考虑了一下,是使用默认jade,还是资料更多的ejs呢。ejs难度不大,套些html就行了。于是转用jade。jade与zen coding相差不大,不过也算是比较好的haml实现。喜欢haml的简洁。不过学习曲线挺陡,自己在tabs跟space上面吃了一些亏。要注意排版,其他的语法糖,记住就行了。
这里给一个简单的jade例子
doctype 5 html head title= title link(rel='stylesheet', href='/stylesheets/style.css') body div#navigation ul li a(href='/') Index li a(href='/signup') SignUp li a(href='/signin') SignIn if locals.user li a(href='/prefile') #{locals.user.name} li a(href='/signout') SignOut li a(href='/role/create') Role Create //- if locals.error #{locals.error} if locals.success #{locals.success} if locals.phone #{locals.phone} if locals.iphone #{locals.iphone} if flash.error li= flash.error if flash.success li= flash.success block content
// Created with JetBrains WebStorm. User: linpeng Date: 13-8-13 Time: PM 3:47 extends layout block content h1= title p Welcome to #{title} if !locals.user form#signin_form(method='POST',action='/signin') label(for="username") input(type="text",id="username",name="user[username]") label(for="password") input(type="password",id="password",name="user[password]") input(type="submit",value="提交")
然后又需要操作数据库,跟nodejs搭配的多是mongodb,自己也下载了一个安装。然后就是学习下mongodb的基本操作。
mongod -dbpath dbpath -port 27017 mongo use dbname; show dbs; db.collection.find() db.collection.find({name:'name'});
下面给出一个mongo例子:
C:\Users\linpeng>mongo MongoDB shell version: 2.4.5 connecting to: test Server has startup warnings: Wed Aug 14 09:37:05.570 [initandlisten] Wed Aug 14 09:37:05.570 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary. Wed Aug 14 09:37:05.571 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal). Wed Aug 14 09:37:05.572 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off. Wed Aug 14 09:37:05.573 [initandlisten] ** See http://dochub.mongodb.org/core/32bit Wed Aug 14 09:37:05.574 [initandlisten] > use makkt switched to db makkt > show collections; roles sessions system.indexes units users > db.users.find(); { "name" : "admin", "password" : "vL4zZeasleosA0OiOVg03Q==", "_id" : ObjectId("520adf6a00ae8a2008000001"), "__v" : 0 } { "name" : "222", "password" : "vL4zZeasleosA0OiOVg03Q==", "_id" : ObjectId("520aeb7a8fa98f8c1d000001"), "__v" : 0 } { "name" : "demo", "password" : "vL4zZeasleosA0OiOVg03Q==", "_id" : ObjectId("520b372544f01e981d000002"), "__v" : 0 } > db.users.find({name:'admin'}); { "name" : "admin", "password" : "vL4zZeasleosA0OiOVg03Q==", "_id" : ObjectId("520adf6a00ae8a2008000001"), "__v" : 0 }
然后是写了个网站登录、网站注册、网站注销的demo。
从demo里面也看得出纯手工操作mongodb是比较麻烦的。
于是便把mongoose找来。npm install mongoose 或在package.json里面的dependencies里加mongoose:"*"
然后就是对照mongoose官网翻阅了一翻,先连接mongodb,然后写Schame,然后Model。最后exports出去。这样mongoose的工作就完了。没什么比较麻烦的东西,主要是Schame的定义以及Query查询。
这里给一个Model的例子
/** * Created with JetBrains WebStorm. * User: linpeng * Date: 13-8-9 * Time: PM 2:11 */ var mongoose = require('mongoose'); var config = require('./../config'); var nameProperty = { type: String, index: { unique: true }}; var userSchema = mongoose.Schema({ name:nameProperty, password:String }); var User = mongoose.model('user',userSchema); module.exports = User;
又发现网站需要flash操作。于是npm install flashify
npm WARN package.json application-name@0.0.1 No README.md file found! npm http GET https://registry.npmjs.org/flashify npm http 200 https://registry.npmjs.org/flashify npm http GET https://registry.npmjs.org/flashify/-/flashify-0.1.2.tgz npm http 200 https://registry.npmjs.org/flashify/-/flashify-0.1.2.tgz flashify@0.1.2 node_modules\flashify
整体来说,nodejs、express、mongoose操作都不复杂,主要难点在于集成在一起,js调试比较麻烦,ide我推荐webstorm。然后就是nodejs本身的异步处理,有些异步方法是在不根据代码顺序执行的,有时候需要注意一下,要把依赖异步处理结果的执行步骤,放在异步处理方法体内。这些问题出现在连接数据库,读磁盘等比较费时费力的操作上面。
经过nodejs这一遭,对函数式有了初步的了解。与 java不同,函数式讲究的是返回结果,一个函数就是一个操作集,操作结束,给个结果。是动词,更少的名词,与指令式有本质区别。
学习资料:
mongoose http://mongoosejs.com/index.html
jade语法(英文)http://naltatis.github.io/jade-syntax-docs/
中文jade https://github.com/livereload/livereload-plugins/blob/master/Jade.lrplugin/node_modules/jade/Readme_zh-cn.md
相关文章推荐
- Matlab 如何用legend标记部分曲线
- 3-1、Intellij IDEA搭建配置Scala环境、打包
- IOS开发-画曲线画弧线画圆
- ECC椭圆曲线详解
- Scala 访问权限控制——Scala Access Modifiers
- Scala之ListBuffer、ArrayBuffer、Queue及Stack介绍
- scala 中的exvcel导出
- scala gbdt以及数据处理
- HTML5画布二次方曲线教程
- scala-springmvc-hibernate观项目有感
- scala(3)-编写第一个Hello world!
- SDP(8):文本式数据库-MongoDB-Scala基本操作
- Scala 学习笔记
- scala-34:对List进行高效的排序和倒排序代码实战
- 安装IDEA和运行SCALA程序
- Unity实用小工具—画二维动态曲线
- 使用cygwin 和 scala-eclipse 搭建 Mahout 源代码的开发环境
- scala-43:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
- scala 排序算法 快速排序
- Scala模式匹配和样例类