Modularizing web applications

后端 未结 10 1987
孤城傲影
孤城傲影 2021-01-31 19:28

I was wondering how big companies tend to modularize components on their page. Facebook is a good example:

There\'s a team working on Search that has it

10条回答
  •  温柔的废话
    2021-01-31 20:29

    Web development definitely brings some organizational challenge. HTML/CSS is not exactly the dream environment for splitting work. It is very important to define certain rules and strictly follow them.

    My personal tactic I have come to is to prefix the names in shared sources (like CSS or markup components) with some module suffix. If you keep to the strategy, it will uniquify the names globally.

    For example:

    instead of

    div.question_title
    div.question_body
    

    you could use

    div.so_question_title
    div.so_question_body
    
    div.su_question_title
    div.su_question_body
    

    Also agree with teams on some shared data like colors of the color scheme. Define them somewhere globally and reuse them everywhere.

    Another issue arrives when teams are working on different parts of the same page. Here if you're developing a page component, you may find one day something is broken because the guys working on the page itself changed something and changes propagated down the element hierarchy.

    For example, if you define a CSS style in this manner:

    div.main_news *
    {
        /* ... */
    }
    

    it would be asking for trouble. I suggest that you have at as a rule to define CSS styles with the minimum possible scope which is sufficient for some technique to work.

    One possible workaround: each submodule firstly resets all the styles for its top-level hierarchy element, like:

    div.news_container
    {
        /* Reset styles */
    }
    

    so that you can now work on the module resting assured the changes in some parent elements would be stopped at your perimeter.

    UPDATE: Regarding divs with UIDs. If you mean Facebook, I'm not sure what UIDs you are referring to. Only hidden inputs have some long cryptic IDs as their values (main page, not logged in), but this is likely the result of the framework automatically generating these values for some reason. I once wrote some code (for ASP.NET MVC) for Html helpers to generate unique IDs application-wide (I wanted to bind checkboxes with labels by IDs completely automatically and transparently for me). Another case could be that a stateful event-driven framework (such as ASP.NET WebForms) has unique IDs generated server side as a requirement to support its operation. Each control has to have some unique ID so that it is possible to know on the server side which element raised an event on a page. Also some WYSIWYG editors would add auto IDs to elements when you drag them and drop to a form.

    This all aside, it is of course possible to have some pre-build script to go over the code and inject unique IDs into markup and CSS code portions. But you really need to know exactly what and why you are doing this. I'm personally of the opinion this "uniquization" in general can be achieved manually by enforcing some simple rules in a team, while some work can of course be automatized, like what I described above.

提交回复
热议问题