是否为单个帖子创建单独的JS应用程序?

时间:2015-10-01 作者:Leahcim

Automatic正在构建一个React。调用基于js的主题Picard. 所有JS代码都在picard.js, 您可以在下面看到参考。虽然WordPress本身没有“路由器”(as explained here), 反应js确实如此,并且在这个应用程序中使用它来更改显示帖子时的URL。

My question is, 如果我想构建一个JS应用程序来显示帖子(比如在一个名为posts.js), 如何使用不同的JS应用程序(例如在名为post.js) 要显示单个帖子?

换句话说,如果我不想使用客户端路由器,而只是为单个帖子创建一个小JS应用程序(并延迟加载),然后如果用户单击返回查看帖子列表,那么posts.js 已加载。

function picard_scripts() {
    wp_enqueue_style( \'picard-style\', get_stylesheet_uri(), \'20150405\' );
    wp_register_script( \'picard-script\', get_template_directory_uri() . 
        \'/picard.js\', array(), \'20150506\', true );
    wp_enqueue_script( \'picard-script\' );
    wp_enqueue_style( \'genericons\', get_template_directory_uri() . 
        \'/genericons/genericons.css\', array(), \'3.4\' );
}
add_action( \'wp_enqueue_scripts\', \'picard_scripts\' );
如果你想知道,我不想使用客户端路由器,因为我发现它们有问题,但我确实想用JavaScript构建UI,所以我更愿意依赖WordPress来处理URL/路由(即使WordPress没有路由器)。

1 个回复
最合适的回答,由SO网友:dswebsme 整理而成

我将根据我对所提供信息的理解,尝试给出一个答案。

在开始研究逻辑之前,我将概述几个假设:

1) 像Picard一样,您将绕过标准的WP模板层次结构,转而使用索引。php失败。

2) 端点将由WP REST API插件提供。

3) 为了使主题尽可能简单,我们将在函数中放置路由逻辑。php。

从这里,您需要决定是将站点构建为单页异步应用程序还是标准请求/响应样式的web站点。

单页应用程序将更加依赖前端路由。您也可以同时拥有这两个帖子。js和post。根据js结构/框架预加载js。URL将包含哈希,JS将路由映射到API端点。

// basic example - your route patterns may vary
http://domain.com/#posts
http://domain.com/#post/my-post-slug
标准样式的网站将允许PHP处理路由。您的URL将遵循标准的WP结构和功能。php将根据请求将JS库排队:

// very basic routing logic - add any conditions as needed
function enqueue_template_scripts() {
    // load posts.js for blog page
    if(is_home()) {
        wp_enqueue_script(\'post-list\', \'posts.js\');
    }
    // load post.js for single requests
    if(is_single()) {
        wp_enqueue_script(\'post-single\', \'post.js\');
    }
}
add_action(\'wp_enqueue_scripts\', \'enqueue_template_scripts\');
注意:根据您选择在路由逻辑中执行的操作,其他操作挂钩可能对您更好。在本例中,我使用“wp\\u enqueue\\u scripts”来演示脚本包含。