如何运行nodejs flatiron / director示例

时间:2012-01-19 19:28:01

标签: node.js flatiron.js

我尝试运行https://github.com/flatiron/director#client-side示例以熟悉director.js。

我无法在客户端设置 flatiron 模块。

在我的html页面(例如,<my_project>/page.html)中,我将director.js的位置替换为 我项目对应的位置:

<my_project>/node_modules/flatiron/node_modules/director/lib/director.js

在浏览器中加载<my_project>/page.html页面 我收到错误:导出和路由器未定义。

第一个想法:毕竟,在浏览器端没有nodejs ...

好的,我认为浏览器可以帮助我。 我生成了一个“浏览器端”包(是否有必要?):

my_project> node node_modules/browserify/bin/cli.js node_modules/flatiron/node_modules/director/lib director.js -o cs_director.js

我在行中使用了它:<script src="cs_director.js"></script>

问题在于错误

Uncaught ReferenceError: Router is not defined
(anonymous function)

仍然出现,所以我猜整个例子都行不通。

我是node / js的新手,我不确定它是否能使我在上面描述的情况下做了什么...... 有人如何解决它?

或者一般来说,如何在浏览器端使用“同构”的东西? Github上的html示例只是引用相同的.js文件 作为服务器端示例......

你能推荐一些教程,例子吗?

谢谢, -gvlax

2 个答案:

答案 0 :(得分:2)

您可以找到特定于浏览器的director here版本,其中删除了所有服务器代码。

答案 1 :(得分:2)

感谢DeadDEnD,

现在它就像一个魅力!

我不知道我怎么能错过自述文件中的信息...我先阅读手册,我发誓: - )

以下是我的示例代码:

  <!html>
  <html>
    <head>
      <script src="director-1.0.7.min.js"></script>

            <script>

        var author = function () { console.log("author called.");},
            books = function () { console.log("books called."); },
            viewBook = function(bookId) { console.log("viewBook called."); };

        var routes = {
          '/author': author,
          '/books': [books, function() { console.log("anonymous fun called."); }],
          '/books/view/:bookId': viewBook
        };

        var router = Router(routes);
        router.init();

      </script>
    </head>
    <body>
        Click <a href="#/books">me</a> to call two functions at a time. 
    </body>
  </html>

- gvlax