我尝试运行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
答案 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