最近帮朋友做个小网站,刚开始用angular+bootstrap做前端,angular入门不简单,但是熟悉了之后就不想在使用jq来做页面了。
憋死憋活终于把网站初稿做出来了,然后朋友说angular的SEO实在不行.....其实做之前就知道有这问题,当初提出的办法是做一些静态的引导页面或者帮助页面,然而现在觉得这样做不太靠谱,继续coding......
思考很久后觉得可以在中间架一层node,然后各种问度娘,发现淘宝已经有这个思路了
http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/
服务器上同时跑tomcat和node,页面请求过来的时候node这边向java后台获取数据生成页面返回给浏览器,盗用下淘宝的图
之前的架构
java:负责提供接口数据
angular:负责路由及页面生成
现在的结构:
java:负责提供接口数据
express:页面路由由负责
bootstrap:css框架(响应式栅格布局)
ejs:模板引擎
angular:后台管理页面(部分不需要SEO的直接用angular了)
node:页面生成
node这边向java获取数据,页面ajax获取数据的时由node做一下代理到java。
到了这个位置,只需要定义一套node,java,浏览器端通用的api规则就可以了,原本想自己写一套,看着看着又发现了点好东西,https://github.com/carlisliu/modelproxy 淘宝已经有套现成的了,直接拿来用就可以了(可能需要根据自己需求改下源码,我把所有传输格式改成了json)
当请求测试成功后,感觉一下子很完美了
但是图片上传会涉及跨域的问题,node 80端口这边无法请求到java 8080端口的文件,各种度娘后的解决方案是:使用iframe新建一个网页向后台调用请求,后台生成URL重定向到80端口下的一个静态网页,这个URL中添加前台需要的返回数据,由静态网页中的脚本解析URL并且调用父网页的函数。大致是这个思路,讲的太乱了....可以看下面的链接
http://wengzhijuan12.blog.163.com/blog/static/3622414520138261584489/
终于折腾完了,这是文件结构,基本以express为标准
网站雏形也出来了:www.lifejx.com(别乱戳,会蹦掉的= =)
说了那么多,折腾那么久,其实就是因为后台java是定死的,而我又不想写jsp什么的,于是就是各种折腾....
个人理解的前段应该是:负责路由及展示出来的元素,后台只负责提供数据接口(angular),这样子就是会导致前台的工作量不断的加大。
入前端没多久,觉得有什么问题可以讨论下~轻喷...