首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为单个帖子创建单独的JS应用程序?

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

WordPress Development用户
提问于 2015-10-01 21:30:55
回答 1查看 175关注 0票数 2

Automattic正在构建一个基于React.js的主题,名为皮卡德。所有的JS代码都是在picard.js中,您可以看到下面的引用。尽管WordPress本身没有一个“路由器”(如前所述),但是React.js确实有,并且在这个应用程序中,当显示post时,它被用来更改URL。

我的问题是,如果我想构建一个JS应用程序来显示这些帖子(比如在一个名为posts.js的文件中),我如何使用一个不同的JS应用程序(例如在一个名为post.js的文件中)来显示一个单独的帖子?

换句话说,如果我不想使用客户端路由器,而只是为单个帖子创建了一个小型JS应用程序(和延迟加载的JS应用程序),那么如果用户单击回看帖子列表,就会加载posts.js

代码语言:javascript
运行
复制
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没有路由器)。

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2015-10-04 19:16:55

我将根据我对所提供的信息的理解,尝试把答案放在一起。

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

1)与Picard一样,您将绕过标准WP模板层次结构,以支持index.php失败。

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

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

从这里开始,您需要决定是否将站点构建为单个页面、异步应用程序或标准请求/响应风格的网站。

单页应用程序将更加依赖前端路由。根据您的JS结构/框架,您还可能预装了posts.js和post.js。您的URL将包含散列,您的JS将映射到API端点的路由。

代码语言:javascript
运行
复制
// basic example - your route patterns may vary
http://domain.com/#posts
http://domain.com/#post/my-post-slug

标准样式的网站将允许PHP处理路由。您的URL将遵循标准WP结构,functions.php将根据请求为您的JS库排队:

代码语言:javascript
运行
复制
// 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_enqueue_scripts”来演示脚本包含。

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/204334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档