• Soy文件生成JS文件


    1.下载工具包,后解压。

    http://closure-templates.googlecode.com/files/closure-templates-for-javascript-latest.zip

    2.运行命令:

    java -jar SoyToJsSrcCompiler.jar --outputPathFormat mainui.js mainui.soy

    以下是例子:

    1. index.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>WebSite - Home</title>
        
        <link href="styles/main.css" rel="stylesheet" type="text/css">
        
        <script src="scripts/lib/jquery-1.8.2.min.js"></script>
        <script src="scripts/lib/soyutils.js"></script>
        <script src="scripts/main.js"></script>
        <script src="scripts/mainui.js"></script>
        <script src="strings/strings.js"></script>
    </head>
    
    <body>
    </body>
    </html>

    2. main.css

    @charset "utf-8";
    footer {
        display: none;
    }
    #footer-content {
        text-align: center;
    }
    nav {
        position: fixed;
        z-index: 100;
        top: 20px;
        right: 15px;
    }
    #logo {
        font-size: 24px;
        font-weight: bold;
        color: #353535;
    }
    a {
        text-decoration: none;
    }
    a.active {
        font-weight: bold;
        color: #353535;
    }
    a:active {
        color: #353535;
    }
    a:hover {
        color: #4183c4;
    }
    ul {
        list-style-type: none;
    }
    li.horizontal{
        float: left;
    }
    #section-home {
        margin-top: 180px;
        margin-right: auto;
        margin-bottom: 180px;
        margin-left: 80px;
    }
    #logo-big {
        font-size: 60px;
        font-weight: bold;
        color: #353535;
    }
    #logo-description {
        font-size: 60px;
        font-weight: bold;
        color: #999;
        float: left;
    }
    #li-logo-big {
        text-align: left;
        width: 400px;
    }
    a:hover {
        cursor:pointer;
    }
    nav a {
        margin-right: 5px;
        margin-left: 5px;
    }

    3. main.js

    $(document).ready(function(){
        alert("document ready");
        
        $("body").html(website.ui.main.body(website.strings.body));
        $("#main-content").html("Home");
        
        $("#nav-home").click(function(){
            $("#nav-home").addClass("active");
            $("#nav-guide").removeClass("active");
            $("#nav-faq").removeClass("active");
            $("#nav-dashboards").removeClass("active");
            $("#main-content").html("Home");
            $("title").text(website.strings.title.home);
        });
    
        $("#nav-guide").click(function(){
            $("#nav-guide").addClass("active");
            $("#nav-home").removeClass("active");
            $("#nav-faq").removeClass("active");
            $("#nav-dashboards").removeClass("active");
            $("#main-content").html("Guide");
            $("title").text(website.strings.title.guide);
        });
    
        $("#nav-faq").click(function(){
            $("#nav-faq").addClass("active");
            $("#nav-home").removeClass("active");
            $("#nav-guide").removeClass("active");
            $("#nav-dashboards").removeClass("active");
            $("#main-content").html("FAQ");
            $("title").text(website.strings.title.faq);
        });
    
        $("#nav-dashboards").click(function(){
            $("#nav-dashboards").addClass("active");
            $("#nav-home").removeClass("active");
            $("#nav-faq").removeClass("active");
            $("#nav-guide").removeClass("active");
            $("#main-content").html("Dashboards");
            $("title").text(website.strings.title.dashboards);
        });
    });

    4. mainui.soy 和 mainui.js

    {namespace website.ui.main}
    
    /**
      * The body content.
      * @param navHomeText The text of link home.
      * @param navGuideText The text of link guide.
      * @param navFAQText The text of link faq.
      * @param navDashboardsText The text of link dashboards.
      * @param copyright The text of copyright.
      */
    {template .body}
    <header>
        <a id="logo" href="">WebSite</a>
        <nav>
            <a id="nav-home" class="active">{$navHomeText}</a>
            <a id="nav-guide">{$navGuideText}</a>
            <a id="nav-faq">{$navFAQText}</a>
            <a id="nav-dashboards">{$navDashboardsText}</a>
        </nav>
        <hr/>
    </header>
    
    <div id="main-content">
    </div>
    
    <footer>
        <hr/>
        <div id="footer-content">{$copyright}</div>
    </footer>
    {/template}
    // This file was automatically generated from mainui.soy.
    // Please don't edit this file by hand.
    
    if (typeof website == 'undefined') { var website = {}; }
    if (typeof website.ui == 'undefined') { website.ui = {}; }
    if (typeof website.ui.main == 'undefined') { website.ui.main = {}; }
    
    
    website.ui.main.body = function(opt_data, opt_ignored) {
      return '<header><a id="logo" href="">WebSite</a><nav><a id="nav-home" class="active">' + soy.$$escapeHtml(opt_data.navHomeText) + '</a><a id="nav-guide">' + soy.$$escapeHtml(opt_data.navGuideText) + '</a><a id="nav-faq">' + soy.$$escapeHtml(opt_data.navFAQText) + '</a><a id="nav-dashboards">' + soy.$$escapeHtml(opt_data.navDashboardsText) + '</a></nav><hr/></header><div id="main-content"></div><footer><hr/><div id="footer-content">' + soy.$$escapeHtml(opt_data.copyright) + '</div></footer>';
    };

    5. strings.js

    if (typeof website == 'undefined') { var website = {}; }
    if (typeof website.strings == 'undefined') { website.strings = {}; }
    
    website.strings.title = {
        home:'WebSite - Home',
        guide:'WebSite - Guide',
        faq:'WebSite - FAQ',
        dashboards:'WebSite - Dashboards',
    }
    
    website.strings.body = {
        navHomeText:'Home',
        navGuideText:'Guide',
        navFAQText:'FAQ',
        navDashboardsText:'Dashboards',
        copyright:'© 2014 LDL. All rights reserved.'
    }
    
    website.strings.mainContent = {
        logDescription:'The description'
    }
  • 相关阅读:
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) E. Tree Folding 拓扑排序
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) D. Artsem and Saunders 数学 构造
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) C. Table Tennis Game 2 水题
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) B. Code obfuscation 水题
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) A. Neverending competitions 水题
    小米支付实习面试经历
    Codeforces Round #396 (Div. 2) E. Mahmoud and a xor trip dfs 按位考虑
    Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
    Codeforces Round #396 (Div. 2) C. Mahmoud and a Message dp
    Codeforces Round #396 (Div. 2) B. Mahmoud and a Triangle 贪心
  • 原文地址:https://www.cnblogs.com/ldlchina/p/3869179.html
Copyright © 2020-2023  润新知