基于express的复杂应用——代码结构分层

2017-05-16 15:15:25

项目之初,我一般选择用 express 的脚手架工具 express-generator 生成目录结构,比较快捷,生成的文件结构也比较直观。 npm install express-generator -g // 全局安装 express -e myapp // 创建工程,生成目录,使用ejs作为模板语言 生成的目录结构如下: ├── app.js ├── bin │ └── www ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets ├── routes │ ├── index.js │ └── users.js └── views ├── error.ejs ├── index.ejs └── layout.ejs app.js 作为入口文件 public 存放静态资源 routes 存放路由文件 views

SASS

2017-03-20 04:42:24

sass 安装 install ruby sudo gem install sass 申明变量 $value = 100px; $color = #fafafa; 编译 sass style.scss style.css 编译风格 * nested:嵌套缩进的css代码,它是默认值。 * expanded:没有缩进的、扩展的css代码。 * compact:简洁格式的css代码。 * compressed:压缩后的css代码。 sass --style compressed style.scss build.css 监听文件 // watch a file sass --watch input.scss:output.css // watch a directory

2016总结

2016-12-31 08:11:05

2016 过去的这一年,算是一个转折点吧,学生时代的终结,开始工作了。毕业后的几个月,也会经常想起上学时的很多美好,日常用语也多了句“我在学校的时候...”,我想所有刚离校的同学有共感,毕竟伴随了16年的读书模式要转换了,虽然在学校时也会出去做外包,去实习,但当全职工作后还是很回念学生时代。 说是16年的年度总结,其实多半是下半年的一些变化。以前我觉得总结什么的,都是给别人看的,形式主义。但工作的半年我转变了自己的看法,我尝试在工作的每周、每月梳理下,在每个时间段内,自己学到的新东西以及欠缺的东西,这样就有一种看着自己不断成长的感觉。不然你可能只是觉得自己好像增长了,好像有些问题被人诟病,但有不明确的知道哪些点增长了,哪些还在拖后腿。 既然是贴着程序猿的标签,那年度总结就分为生活和技术两部分吧: 生活 虽然学的是自动化专业,但是转战互联网其实从大二就开始了,虽然家里人都希望去稳定的国企,但他们也尊重我的选择,所以毕业后之久投身IT行业有惊无险。前半年的毕业找工作期也是经历了很多波折,换了好几个offer。。虽然一波三折,但是吃一堑长一智,记得任何时候都有必要签书面合同!!!不要因为对方是熟人而口头承诺!!!这是对自己的基本保障。 get 自己理发技能,从6月份开始远离理发店,到目前已经半年时间自行理发了,虽然插曲不断,总归做了件自己一直想做的事~

基于nodejs的问卷调查系统

2016-12-28 04:23:09

花了4天时间撸了一个问卷调查系统,算是入门nodejs后端开发。 github传送门:https://github.com/flute/survey 技术 后端:nodejs+express+mysql 前端:material design install npm install 配置数据库 conf/db.js ,导入sql文件 mysql.sql node app.js 功能 登陆验证 问题类型包括 单选、多选及问答三类 查看问卷列表、删除 填写提交问卷 问卷结果列表及结果详情 注: 在系统实现过程中,数据表的设计及数据操作有些麻烦,感兴趣的往下看: 为了问卷结果的可读性及统计方便,数据表设计时将 问卷、问题、选项 分为三个表,在插入、读取问卷时,

Echarts3 中国地图下钻至县级

2016-11-29 02:41:39

Echarts3 地图下钻至县级 看了会D3.js,鉴于学习曲线较高,且要实现的效果不复杂,遂使用Echarts完成——中国地图下钻至县级。 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>echarts3中国地图下钻至县级</title> <link rel="stylesheet" type="text/css" href="static/css/main.css"> <!-- Echarts3 --> <

background滤镜效果及高斯模糊

2016-10-31 03:36:29

background滤镜效果 场景及实现:父级div嵌套子div,父div有背景图片,子div中有文字,需要实现背景图加黑色半透明遮罩,不影响子div中文字的显示效果。 CSS的filter滤镜效果的Brightness属性可以实现遮罩效果,但是类似于opacity属性,这种效果会影响子div的显示效果: 解决方法: <div id="section1"> <div id="content"> </div> </div> #section1 { background: url('../images/bg-img.jpg') center center no-repeat; background-size: cover; position: relative; } #content { position: absolute; } #section1::before { content: ''; display: block;

Div+contenteditable 模拟 textarea 及存在的问题

2016-10-13 07:45:15

在网页端实现聊天功能时,大多会采用textarea来实现,但是当需要在textarea中显示表情/图片时,就不好实现了。这时候普遍的方法是给div添加contenteditable属性,来模拟textarea,而在div中显示图片及表情就可以轻松实现了。 The contenteditable global attribute is an enumerated attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values: true or the empty string,

jQuery 监听隐藏表单

2016-09-03 04:11:24

设置了一个隐藏表单,其值由Ajax异步修改。前端需要实时监听该值,并由此进行相关操作。 <input type="hidden" value="" id="datas" name="datas"> 正常的表单可以使用 .change() 事件监听其 value 的改变,而隐藏表单其 value 改变时不会触发 change() 事件! 解决方法: 当为隐藏表单赋值后,使用 trigger() 手动触发 change() 事件: function setValue(ajaxData){ $('#datas').val(ajaxData).trigger('change'); } $('#datas').change(){ console.log('changed'); }

React Native 初始化项目慢的解决办法

2016-08-03 01:21:21

初始化React Native:react-native init ProjectName 由于墙的原因,即便开ss也会经常卡着不动。再次感谢方教授! 先看下NMP官网对 node-gyp 的介绍 node-gyp Node.js native addon build tool node-gyp is a cross-platform command-line tool written in Node.js for compiling native addon modules for Node.js. It >bundles the gyp project used by the Chromium team and takes away the

Nodejs 爬虫使用 eventproxy 控制并发

2016-08-02 03:06:21

use superagent 抓取 cheerio 解析 eventproxy 控制并发 target url:https://cnodejs.org/ cd nodejs mkdir test && cd test touch node.js 抓取其首页数据,共40篇文章。 首先爬取首页篇文章的URL,将得到的40篇文章的URL存入数组articleUrlArr 然后爬取每篇文章的详细内容。 var eventproxy = require('eventproxy'); var superagent = require('superagent'); var cheerio = require('cheerio'); var articleUrlArr = [], baseUrl = 'https://cnodejs.org/'; superagent.get(baseUrl)