Do not fear the unknown —— Master Yi
不要害怕未知的事物 —— 易
新人指南
- 项目基于ES6 + React + Webpack 搭建, 兼容IE8+.
- 我们推荐使用yarn来做包管理工具,它更快更优雅。
- 项目所有依赖写在package.json文件中, 需要先使用 yarn install 安装项目的所有依赖.PS:安装需要Xcode并给予管理权限
- 运行 npm run dev 进入开发环境. 会通过webpack-dev-server启动一个本地server, 支持代码热更替.
- 本地开发的 host : 127.0.0.1 static.sofund.com matrix.sofund.com
- 新版本的开发静态url是static.sofund.com,而实际的接口的请求是matrix.sofund.com
- 所有的异步请求由本地 127.0.0.1:9001 发起,通过nginx转发到相应的后端接口,目的是实现前后端的真正分离
- 需要 更新 nginx的配置 以解决跨域问题
- 如果提交代码时git 报错为
error Unexpected token cons undefined
,请执行git commit -m “sometext” --no-verify - 开发的时候对照着 matrix视觉规范.psd
- 代码提交的时候以组件为单位进行提交,并且提交代码审查,
- arc land 出现revision错误且无法合并至matrix分支时, 请在 /usr/local/lib/node_modules/arcanist/arcanist/src/land/ArcanistGitlandEngine.php 文件中,186行添加 no-verify
- 基于组件化思想,开发前请 注意一下common文件下下的组件,以及common.scss ,灵活复用组件加快开发速度
- 开发出现跳转登录页时,需要更新nginx的cookie设置,如下所示。
nginx配置的更改
请在nginx.conf 中添加新的server
代码如下: 请务必核对文件路径是否与自身路径符合
此处监听了2个url,原因是: 5.1
#将此server置于第一个server,以解决IE8接口数据问题
server {
listen 80;
server_name matrix.sofund.com;
charset utf-8;
# 静态SVN发布仓库地址
autoindex on;
autoindex_exact_size on;
location / {
add_header "Access-Control-Allow-Origin" "*";
expires 1M;
access_log off;
add_header Cache-Control "public";
proxy_set_header x-request-filename $request_filename;
proxy_set_header Cookie "_T=1gGid1Vw; _I=3; JSESSIONID=673B88B560565E23F8261C5D83999323";
proxy_pass ht tp://10.4.32.134:9000;
}
}
server {
listen 80;
server_name static.matrix.com;
charset utf-8;
# 静态SVN发布仓库地址
autoindex on;
autoindex_exact_size on;
location / {
root /Users/renren/workspace/gitrepos/external-matrix/MATRIX/dist;
}
location /js {
proxy_set_header x-request-filename $request_filename;
proxy_pass http://127.0.0.1:9001;
}
location ~* \.(?:ttf|eot|woff)$ { #|ttc|otf
add_header "Access-Control-Allow-Origin" "*";
root /Users/renren/workspace/gitrepos/external-matrix/MATRIX/dist;
}
}
本地开发访问接口重定向到login解决方案:
通过以上的nginx配置,我们解决了本地开发时的跨域问题,但是后台提供的API很多时候是需要验证cookie的,意味着发出请求时如果本地域与后台API域不同,浏览器发出的请求中不会携带cookie,则会导致后台程序重定向到登录模块.
那么如何解决这种问题呢?
首先要明白一点,在解决跨域问题时,nginx充当了本地程序与后台服务程序交流的桥梁.请求应当是先被nginx拦截,再由nginx根据其配置转发到相应的真实处理请求的位置.
那么我们只需要让nginx在进行转发请求时携带一些cookie信息就可以了,具体配置如下:
proxy_set_header Host matrix.sofund.com; #设置请求头中的Host字段
proxy_set_header Cookie "_T=aBGtd1XT;_I=57;JSESSIONID=EFC6C79AC08CD63D1D6A23C829E55295"; #设置请求头中的Cookie字段