Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

给菜鸟一条活路吧 #182

Closed
javasmile opened this issue Nov 7, 2014 · 18 comments
Closed

给菜鸟一条活路吧 #182

javasmile opened this issue Nov 7, 2014 · 18 comments
Assignees
Labels

Comments

@javasmile
Copy link

求助啊:
能不能给个多个html文件,目录复杂点的demo啊。
例如目录结构是:
js(/js/jquery/jquery.js, /js/backbone/backbone.js...存放所有js插件)
css(/css/select2.css, /css/bootstarp.css存放所有css)
pages(按照各个模块分目录,全部都是页面,也就是html)
例如:
/pages/welcome.html 欢迎页面,需要上面的jquery.js,backbone.js
/pages/app/order.html 下订单,需要jquery.js,backbone.js,order.js,xxx.js
/pages/account/account_uplate.html 修改账号的,需要jquery.js,backbone.js,account.js,yyy.js
如何能做到类似fis-quickstart-demo中的那样,一下将所有html所依赖的js、css按需:合并、压缩、修改引用路径。
做到打开后发现:
welcome.html src='welcome.js',welcome.js是jquery + backbone 压缩合并在一起
order.html src='order.js'是jquery.js + backbone.js + order.js + xxx.js 压缩合并在一起

如上该怎么搞?给个能百度的名词也行,暂时找不到方向。

@hefangshi
Copy link
Member

你上述的这些需求,可以直接使用原有的开发模式进行开发,最后用FIS处理即可,fis-quickstart-demo也是最基础的开发模式的产物。

@javasmile
Copy link
Author

如果给个简单的demo最好了,虽然不太明白你的意思,但是非常非常感谢您及时的反馈。

@javasmile
Copy link
Author

给个类似fis-quickstart-demo的demo,里面给出index.html,x.html
各自从不同的js目录引用不同的js即可。如果有最好了,可能是我研究的不够深,我自己再看一下。
多谢关注。

@hefangshi
Copy link
Member

你可以直接在fis-quickstart-demo的基础上自己新建一个x.html,然后随意建立一些js目录引用不同的js,最后用fis编译一下即可,就和传统的开发模式完全一样;)

@javasmile
Copy link
Author

fis.config.merge({
pack : {
'build/1.js' : ['/js/backbone/backbone.js', '/js/dropzone/dropzone.js'],
'build/2.js' : ['/js/jquery/jquery.js', '/js/backbone/backbone.js']
}
});
发现1.js没什么问题,但是2.js里面只有jquery.js,backbone.js没有进去。
不知是否我的方式错误?
可否给个配置demo呢?

@hefangshi
Copy link
Member

@javasmile FIS的pack策略是不打包重复的资源,因为我们设置pack的目的一般是打包不同页面间的公共库用于复用,而类似你期望的冗余的资源打包,可以如demo中的开启自动打包功能来实现

fis.config.set('modules.postpackager', 'simple');
fis.config.set('settings.postpackager.simple.autoCombine', true);

@javasmile
Copy link
Author

多谢!这个方式确实可以,执行fis release -o -p -d ../mydemos -p -m之后变成了:
1.html

    <script type="text/javascript" src="/modules/backbone/backbone_141cf3b.js"></script>
    <script type="text/javascript" src="/modules/jquery/jquery_936e417.js"></script>

2.html

    <script type="text/javascript" src="/modules/backbone/backbone_141cf3b.js"></script>
    <script type="text/javascript" src="/modules/underscore/underscore_d1f801a.js"></script>
    <script type="text/javascript" src="/modules/jquery/jquery_936e417.js"></script>

我更希望,/modules/backbone/backbone_141cf3b.js,/modules/jquery/jquery_936e417.js
被合成1_md5.js,此时1.html中两个引用变成了:

<script type="text/javascript" src="/build/1_md5.js"></script>

2.html类似变成了

<script type="text/javascript" src="/build/2_md5.js"></script>

1_md5.js中压缩合并了backbone.js,jquery.js,2_md5.js压缩合并了backbone.js,underscore.js,jquery.js,有冗余没问题。
如果这个搞定了,我的东西就大功告成。以后所有项目都可以用fis搞了。

@hefangshi
Copy link
Member

你这样的需求无需设置pack属性,直接在fis-conf.js中开启自动合并即可

fis.config.set('modules.postpackager', 'simple');
fis.config.set('settings.postpackager.simple.autoCombine', true);

@javasmile
Copy link
Author

我设置了
fis.config.set('settings.postpackager.simple.autoCombine', true);
执行的是:
执行fis release -o -p -d ../mydemos -p -m

@javasmile
Copy link
Author

一个页面上的js引用没有合成一份。还是分散的一条条的引用。
多谢!这个方式确实可以,执行fis release -o -p -d ../mydemos -p -m之后变成了:
1.html

    <script type="text/javascript" src="/modules/backbone/backbone_141cf3b.js"></script>
    <script type="text/javascript" src="/modules/jquery/jquery_936e417.js"></script>

2.html

    <script type="text/javascript" src="/modules/backbone/backbone_141cf3b.js"></script>
    <script type="text/javascript" src="/modules/underscore/underscore_d1f801a.js"></script>
    <script type="text/javascript" src="/modules/jquery/jquery_936e417.js"></script>

我更希望,/modules/backbone/backbone_141cf3b.js,/modules/jquery/jquery_936e417.js
被合成1_md5.js,此时1.html中两个引用变成了:

<script type="text/javascript" src="/build/1_md5.js"></script>

2.html类似变成了

<script type="text/javascript" src="/build/2_md5.js"></script>

1_md5.js中压缩合并了backbone.js,jquery.js,2_md5.js压缩合并了backbone.js,underscore.js,jquery.js,有冗余没问题。
如果这个搞定了,我的东西就大功告成。以后所有项目都可以用fis搞了。

@javasmile javasmile reopened this Nov 7, 2014
@nwind
Copy link
Member

nwind commented Nov 7, 2014

我也建议做复杂点的 demo,提供几个最佳实践的案例,让别人可以在此基础上开发自己的项目

@hefangshi
Copy link
Member

不好意思,还要加上

fis.config.set('modules.postpackager', 'simple');

@javasmile
Copy link
Author

OK了,就是要这个效果。真的非常感谢。谢谢您的及时回复。非常感动。
是不是我关闭这个讨论就可以了?colse and comment?我为了问你们问题专门注册了github,玩的不熟

@hefangshi
Copy link
Member

@javasmile 是;)

你还可以参考下

https://github.com/hefangshi/fis-postpackager-autoload

还能更进一步的实现不需要自己手动写<script>标签,而是用声明依赖的形式就能按需加载好数据

如果希望和后端结合的话,我们也有与后端集成的解决方案在

http://oak.baidu.com

可以去做一些了解

@hefangshi
Copy link
Member

@nwind 这里的确是一个盲点,在我们看来一个页面也许就能说明问题了,但是用户刚接触的时候认为是一个黑盒,以为有很多特殊的用法,多几个页面应该更能说明问题。

不过我也很困惑,TODO Demo作为MVC DEMO存在了这么长的时间,我认为是比较能说明问题的一个DEMO,为何在FIS社区会造成用户的困扰也是值得考虑的。

@javasmile
Copy link
Author

我作为一个前后端开发人员,前端稍弱一些。我个人谈一下这几天学习fis的感受:
我先快速一周学习了grunt,然后开始学习fis。fis上手相当的快,官网提供的文档也比较健全。
根据demo实践起来相当的快,但是用到实践中去,发现有点磕磕绊绊,就类似上述讨论的问题。
如果说fis社区能够提供一些实践的、复杂点的demo会更好。网上查找fis的实践方案,几乎没有。
无从参考,相当郁闷。但是幸亏有像你这样积极的朋友协助,也终于解决了问题。在此再次感谢。
下一步我试试jsp能否类似html的上述方案。

@hefangshi
Copy link
Member

总之,DEMO总是不嫌多的,可以多找几个DEMO

@2betop
Copy link
Contributor

2betop commented Nov 7, 2014

@javasmile 如果后端是 java, 建议看下 jello ,也是基于 fis 的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants