JPress é um substituto java para wordpress, desenvolvido usando JFinal. Suporta quase todas as funções semelhantes ao WordPress, como modelos, plug-ins, etc. Ao mesmo tempo, em termos de modelos, o JPress apresenta o conceito de "modelo como modelo", que facilita aos produtores de modelos a criação flexível de modelos de negócios, remove funções complicadas, como widgets, e é mais flexível e conciso do que o WordPress em termos de produção de modelos e plug-ins.
No entanto, JPress não é o Java do WordPress. Ele está naturalmente integrado à plataforma pública WeChat, integrando muitas plataformas domésticas de nuvem, envio de SMS e plataformas de envio de e-mail. O conceito original de "modelo como modelo" não está disponível no WordPress, e apenas. Somente jogadores experientes do WordPress podem entender o relacionamento sutil interno. Ao mesmo tempo, a função de sincronização de artigos do WeChat, plataforma pública QQ, Toutiao, Yidian e outras novas mídias serão adicionadas no futuro, tornando-as mais domésticas e localizadas.
Em termos de funcionalidade
Oferece suporte a modelos personalizados, que são definidos por meio de modelos em vez de funções em segundo plano. Ao mesmo tempo, o conteúdo do modelo oferece suporte a categorias personalizadas. Por exemplo, o modelo de artigo oferece suporte a tópicos, categorias, tags e outras categorias.
Suporta vários mecanismos de modelo. O Freemarker é usado por padrão. Os criadores de modelos podem usar outros mecanismos, como o thymeleaf, para renderização. Ele também suporta edição online de modelos em segundo plano (atualmente apenas o mecanismo freemarker é compatível).
Suporta vários tipos de banco de dados e pode configurar diferentes bancos de dados (atualmente apenas o mysql é suportado).
Suporta vários editores, alternância gratuita entre edição visual em segundo plano e edição de markdown e suporta funções como edição de imagens online e destaque de código por padrão.
Ele suporta plug-in e você pode concluir o desenvolvimento de um plug-in com apenas algumas linhas de código. Já existem instâncias helloworld do plug-in em git.oschina.net e github.
Suporta URLs personalizados e personalização de estilo de URL de conteúdo de site.
O suporte da API facilita que o APP ou outros terceiros chamem dados.
Suporte à internacionalização, use JPress para criar facilmente um site em qualquer idioma.
Função de SEO minimalista, você pode definir o SEO separadamente para cada artigo, cada categoria e cada tag, e oferecer suporte à saída do mapa do site.
O registro do usuário suporta verificação de e-mail e SMS Atualmente, os provedores de serviços de SMS oferecem suporte apenas ao Alibaba Dayu.
Suporta configurações de CDN, incluindo Qiniu, Alibaba Cloud, Youpai Cloud, etc.
As imagens carregadas suportam configurações de marca d'água e as imagens carregadas são automaticamente cortadas em vários tamanhos de imagem exigidos pelo modelo para garantir que a exibição da imagem não seja esticada.
O login do usuário suporta login de terceiros e suporta QQ, WeChat, Weibo, Open Source China, Github, Facebook, Twitter e LinkedIn (atualmente apenas o login em QQ, WeChat, Weibo, Open Source China e Github está concluído).
No WeChat
Suporte às configurações do menu WeChat.
Suporta respostas automáticas, adicionando palavras-chave e conteúdo de resposta.
Suporta respostas padrão, incluindo: quando o usuário presta atenção, ao entrar no atendimento multicliente, ao sair do atendimento multicliente, ao enviar fotos, ao enviar voz, ao enviar vídeo, ao enviar localização, ao enviar conexão, quando o usuário digitaliza o código QR com parâmetros, quando o usuário treme.
Todas as respostas automáticas ou respostas padrão suportam a função "resposta avançada", como responder a um artigo, responder a um URL... Respostas avançadas são respostas especiais incorporadas ao JPress, mas são totalmente configuráveis, e mais "respostas avançadas" serão adicionado na função futura.
A resposta automática ou resposta padrão suporta resposta de plug-in e chama o plug-in JPress para concluir a resposta.
Suporta pesquisa de artigos. Responder a palavras-chave retornará artigos correspondentes a palavras-chave.
No futuro, serão suportadas funções práticas como sincronização de artigos ou importação de WeChat.
Em termos de tecnologia
Usando orgulhosamente o JFinal como núcleo, o JPress também se beneficia da arquitetura flexível do JFinal. No sistema de código aberto do framework JFinal, o JPress se preocupa com a implementação de cada linha de lógica e presta atenção na qualidade de cada linha de código. Deve estar entre as melhores práticas do JFinal, por isso também deve ser um item de leitura obrigatória. para cada JFinaler.
Use Freemarker e thymeleaf como motores de modelo. O cache exclusivo integrado ao JPress torna a velocidade de renderização da IU independente do mecanismo de modelo.
Tinymce é usado como editor visual e simplemde é usado como editor de markdown. Os dois podem ser alternados livremente em segundo plano.
O plug-in de UI para upload de arquivos e imagens usa o uploader fino.
No front-end, o JPress usa jquery, bootstrap, admin lte, font-awesome, x-editable, fastclick, toastr, tag-editor, pace, layer, etc.
Em termos de segurança, embora eu pessoalmente tenha feito muitos esforços e trabalhado muito em XSS, CSRF, injeção de SQL, segurança de cookies, etc., ainda são necessárias mais pessoas para cavar e melhorar juntos. A segurança é uma eternidade. tópico. (Mas para amigos novatos, vale a pena aprender e compreender essas seguranças, certo?)
Para suportar a implantação distribuída, o JPress reescreve o HttpSession e usa o ehcache para implementar a função de sessão. Ao mesmo tempo, o projeto depende muito de cookies, portanto, não há pressão na arquitetura distribuída.
JPress tem os seguintes recursos
1. Luz.
É tão leve quanto apenas 8 tabelas de dados, mas pode realizar quase todas as funções do wordpress. Os pacotes jar dependentes também são extremamente leves. Atualmente, existem apenas cos-26Dec2008.jar, druid-1.0.16.jar, ehcache-2.7.5.jar, fastjson-1.2.7.jar, freemarker-2.3.23. jar e javax.jar, jfinal-2.2-bin-with-src.jar, jfinal-weixin-1.7-bin-with-src.jar, jsoup-1.8.3.jar, log4j-1.2.17.jar , mysql-connector- java-5.1.36.jar, slf4j-api-1.7.7.jar, slf4j-log4j12-1.7.7.jar, jetty-server-8.1.8.jar Esses 14 pacotes jar, entre os quais jetty -server-8.1 .8.jar não é necessário e é usado apenas para facilitar a depuração.
O projeto inteiro, incluindo o pacote jar, tem cerca de 20 MB.
2. Rápido.
Não importa quão complexa seja a página, o JPress responde em quase 10 milissegundos. Ao mesmo tempo, o JPress suporta Alibaba Cloud, Qiniu, Youpaiyun e outros CDNs como aceleração e suporta implantação distribuída e outras funções. Kong, só pode ser usado com "rápido" para descrever.
3. Flexível.
JPress propõe o conceito de "modelo como modelo". Os produtores de modelos podem usar o JPress para construir blogs, sistemas de notícias, fóruns, comunidades de perguntas e respostas, shopping centers... além de sua função de plug-in flexível, ele pode ser usado para construir quase qualquer tipo. do site.
4. Doméstico.
Por ser fabricado na China, está mais de acordo com as necessidades do povo chinês. O JPress é naturalmente integrado à conta pública do WeChat. O JPress possui a função de envio de SMS integrada do Alibaba Big Fish e suporta caixa de correio QQ, caixa de correio 163, etc., como servidores de envio de correio. ser adicionadas e outras funções que estejam mais de acordo com as necessidades do povo chinês.
O mais importante é
JPress usa o acordo de código aberto LGPL mais flexível, que não está no mesmo nível dos produtos domésticos de "código aberto" que usam acordos privados.
log de alterações do jpress v4.2.0
Novo: Adicionar opção de código de verificação em segundo plano para facilitar testes automatizados em determinados cenários
Novo: Suporta publicação de produtos de 0 yuan. Quando o valor do pagamento é 0, o pagamento direto é bem-sucedido.
Novo: A função de personalizar o diretório de instalação do plug-in facilita a instalação do plug-in e o plug-in ainda está disponível ao compilar e limpar o diretório de destino.
Otimização: Melhore o módulo de artigo e adicione a função de coleta, obrigado @ o rato que assusta o gato até a morte
Otimização: A configuração do sistema opcional permite que dados vazios sejam passados para limpar a configuração
Otimização: ajuste o tamanho padrão do anexo para upload. O tamanho padrão para imagens é 10 MB e o tamanho padrão para outros arquivos é 100 MB.
Otimização: atualize Jboot, Log4j2 até este
Correção: o problema de palavras-chave ilegais personalizadas em segundo plano serem inválidas
Correção: a exclusão da opção por meio da API pode não entrar em vigor a tempo
Correção: O plug-in depende de jars externos, o que pode causar o problema de não ser instalado em alguns casos.
Correção: erro 500 ocorre após o pagamento do WeChat H5 retornar com sucesso à página, obrigado @AlienJunX
Correção: quando um anexo é inserido em um artigo e um arquivo anexo é muito grande, ocorre um erro, não há prompt na página.
Corrigido: a imagem do editor CKEditor não pode ser colada e carregada