laravel

配置laravel环境

windows下模拟linux环境配置laravel

1.安装homestead,其实就是一个集合了laravel所需环境的虚拟机。
通过vagrant VirtualBox 来使用就可以了,直接参考官网就行。
PS:国内的局域网太不靠谱了,安装的box还不能迅雷离线或者加速,share个福利百度云homestead

2.Laravel 一键安装包下载
解压就用什么好说的~
解压到vagrant 配置的共享目录下改名为laravel

3.vagrant up

4.配置hosts 添加 192.168.10.10 homestead.app

5.网址输入http://homestead.app/

OK~demo如下
demo

oh-my-zsh-theme

oh-my-zsh 主题配置

PS: oh-my-zsh主题有很多,可以自行选择喜欢的进行配置

1.本人比较喜欢Honukai主题,进入github进行下载

2.进入下载目录honukai-iterm-zsh 输入如下命令

1
$ mv honukai.zsh-theme ~/.oh-my-zsh/themes/ #复制主题到~/.oh-my-zsh/themes/

3.修改.zshrc文件 => ZSH_THEME=”honukai”

1
vim ~/.zshrc

4.重新加载~/.zshrc

1
source ~/.zshrc

效果如下:
oh-my-zsh 主题配置

mintty-config

mintty颜色配置

PS: mintty 为babun的shell,默认颜色配置太丑?(其实比起windows内置cmd已经很好了~小黑一把)所以google改颜色~

1.先上mintty-color-schemes找合眼的主题

  1. 复制喜欢配色的minttyrc 文件内容

3.替换C:\Users\Administrator.babun\cygwin\etc(banbun安装默认路径) 下的minttyrc文件

效果如下图:
mintty颜色配置

babun与cmder

babun配合cmder打造windows下的linux

1.下载 babun && cmder 并安装

2.打开cmder,win+Alt+P打开设置界面 进入Startup > Tasks

3.添加一个task,命名为Babun

4.添加如下命令到Task Parameters

1
/icon "%userprofile%\.babun\cygwin\bin\mintty.exe" /dir "%userprofile%"

5.添加如下命令到Commands && save settings

1
*%userprofile%\.babun\cygwin\bin\mintty.exe -o Transparency=0 /bin/env CHERE_INVOKING=1 /bin/zsh.exe

效果如下图:
新建 babun Tasks

install-msi

以管理员身份安装msi文件

PS:只在windows 10 发现要权限问题

1.新建install.bat 文件

2.编辑install.bat msiexec /i msi文件的路径

3.右键install.bat,以管理员身份运行,OK

利用sequelize操作数据库

express配合sequelize操作数据库

—解放直接操作数据库,从orm做起???

1.express直接用express-generator 生成

1
2
3
4
$ npm install express-generator -g
$ express -f --hbs
#这里生成了一个以handlebars为视图的空express项目
$ npm install

2.在目录上创建相应文件夹

1
2
3
4
5
#config 链接数据库
$ mkdir config && cd config && touch db.js
#models 模型
$ mkdir models
#routes(本来就有) 负责路由部分

3.安装sequelize&&mysql

1
2
$ npm install i --save sequelize
$ npm install i --save mysql

4.编辑db.js

1
2
3
4
5
6
7
8
9
10
var Sequelize = require('sequelize');
module.exports = new Sequelize('test', 'root', null, {//密码为空用null或''表示
host: 'localhost', // 数据库地址
dialect: 'mysql', // 指定连接的数据库类型
pool: {
max: 5, // 连接池中最大连接数量
min: 0, // 连接池中最小连接数量
idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
}
});

5.进入models新建user.js文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// user.js
var Sequelize = require('sequelize');
var sequelize = require('../config/db');
// 创建 model
var User = sequelize.define('user', {
userName: {
type: Sequelize.STRING // 指定值的类型
},
// 没有指定 field,表中键名称则与对象键名相同,为 email
email: {
type: Sequelize.STRING
}
}, {
// 如果为 true 则表的名称和 model 相同,即 user
// 为 false MySQL创建的表名称会是复数 users
// 如果指定的表名称本就是复数形式则不变
freezeTableName: false
});
// 创建表
// User.sync() 会创建表并且返回一个Promise对象
// 如果 force = true 则会把存在的表(如果users表已存在)先销毁再创建表
// 默认情况下 forse = false
var user = User.sync({ force: false });
// 添加新用户
exports.addUser = function(userName, email) {
// 向 user 表中插入数据
return User.create({
userName: userName,
email: email
});
};
// 通过用户名查找用户
exports.findByName = function(userName) {
return User.findOne({ where: { userName: userName } });
};
//通过id找用户
exports.findById = function(id) {
return User.findOne({ where: { id: id } });
};

6.进入routes修改user.js文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var express = require('express');
var router = express.Router();
var user = require('../models/user');
/* GET users listing. */
router.get('/', function(req, res, next) {
if(req.query.id){
user.findById(req.query.id).then(function(user){
res.send(user.userName);
});
}else{
res.send('hello users');
}
});
router.get('/addUser', function(req, res, next) {
user.addUser('llan', 'llan@163.com').then(function() {
// 查询新添加的用户
return user.findByName('llan');
}).then(function(user) {
res.send(user.userName);
});
});
module.exports = router;

7.跑服务

1
$ npm start

8.看结果
浏览器输入127.0.0.1:3000
—>完美运行express示例界面(与前面做的无关系???)
示例
浏览器输入127.0.0.1:3000/users
—>见到我们定义的hello users
自定义hello users
浏览器输入127.0.0.1:3000/users/addUser
—>界面出现llan(这货就是从数据库通过userName读出来的)
添加用户
mysql表
浏览器输入127.0.0.1:3000/users?id=1
—>界面出现llan(通过id获取)
findById

multer实现文件上传

express利用multer中间件进行文件上传

因为小项目要用到上传文件功能,所以上网找到multer中间件实现该功能

1.第一步当然是安装multer

1
$ npm install multer

2.第二步配置中间件

1
$ vim app.js

1
2
3
4
5
6
7
8
9
//...
var express = require('express')
var multer = require('multer')
var app = express()
app.use(multer({
dest: './uploads/'
}).single('file'));
//...

3.添加form

xx.html

1
2
3
4
5
6
7
8
9
10
<form action="/" method="post" enctype='multipart/form-data'>
<table align="center">
<tr>
<td>myfile:</td>
<td>
<input type="file" name="file">
</td>
</tr>
</table>
</form>

4.配置路由

routes/xx.js

1
2
3
router.post('/script/addFile',function(req,res,next){
console.log('file',req.file)
});

~~进阶
读取上传文件内容并写入数据库(这里直接读取内容写入数据库,其实思路应该记录路径用到的时候再读取,为研究到,有时间再研究)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
pool.getConnection(function(err, connection) {
var script;
var id = req.query.id;
fs.readFile(req.file.path, function (err, data) {
if (err) {
return console.error(err);
}
script = data.toString();
connection.query($sql.script.updateScript, [script,id], function(err, result) {
if(result) {
result = {
code: 200,
success:true
};
}
// 以json形式,把操作结果返回给前台页面
jsonWrite(res, result);
// 释放连接
connection.release();
});
});
});

$sql.script.updateScript

1
2
3
script:{
updateScript:'update script set script=? where id=?'
}

PS:这样直接写sql语句操作数据库太不友好了,应该用orm(Object relational mapper),google了下决定用sequelize。下一个blog就它了~~

安装mysql数据库

安装数据库

1.download zip文件,解压到D:\dev,重命名为mysql
2.配置MYSQL的环境变量
path 变量新增 ;D:\dev\mysql\bin
3.将my-default.ini另存为my.ini并修改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
[mysql]
#设置mysql客户端的字符集
default-character-set = utf8
# The MySQL server
[mysqld]
port = 3306
#设置mysql的安装目录
basedir = D:\dev\mysql
#设置mysql数据库的数据存放目录,必须是data或者\xxx-data
datadir = D:\dev\mysql\data
#设置服务器段的字符集
character_set_server = utf8

4.注册服务
以管理员身份运行cmd
1
$ mysqld --install mysql5 --defaults-file=d:\dev\mysql\my.ini

5、启动服务

1
$ net start mysql5

6.登录MySQL服务器

1
$ mysql -h hostname -u username -p

-h选项:用于指定所希望连接的主机,即运行MySQL服务器的机器。如果在运行MySQL服务器的机器上运行该命令,则可以忽略该选项和hostname参数;如果不是,必须用运行MySQL服务器的主机名称来代替主机名称参数。
-u命令:用于指定连接数据库时使用的用户名称。
-p命令:用于指定用户输入的密码

7.安装navicat for mysql(又可以不用???)
download

express+mysql+handlebar

搭建express+mysql项目(一)

因为前段时间需要着手一个小工具开发,所以接触了express
。之前用express+mongodb+ejs,现在尝试用express+mysql+handlebar来实现该功能

1.首先安装express程序生成器

1
$ npm install express-generator -g

2.创建项目

1
$ express myapp --hbs

3.安装依赖

1
$ npm install

4.使用supervisor提高nodejs调试效率(可以不做???)
1、全局安装

1
$ npm install

2、修改packjson

1
2
3
"scripts": {
"start": "supervisor ./bin/www"
}

5.app.js中添加
1
2
3
app.listen(3000, function () {
console.log('my app listening on port 3000!');
});

6.召唤hello world
1
$ npm start

7.浏览器中输入localhost:3000 观摩hello world
demo