Copie o código fonte desta página e cole no seu Projeto Sails (arquivo \views\pages\faq.ejs)
Este é um modelo para criar sua própria página de "Perguntas Frequentes". Ele foi gerado convertido para a língua portuguesa a partir da versão gerada como parte do gerador de códigos Sails. Além de cumprir seu objetivo principal como um modelo, esta página funciona como um guia prático sobre o próprio gerador de códigos do Sails.
Antes de implantar este aplicativo em produção, certifique-se de substituir o conteúdo desta página por perguntas e respostas reais que são relevantes para o seu projeto. Ou se você não precisa de um FAQ, basta excluir este arquivo completamente.
Este aplicativo inclui várias ferramentas e integrações que usamos frequentemente no topo do Sails. Eles funcionaram bem para nós no passado; permitindo que nos concentremos no desenvolvimento de novos recursos com o mínimo de sobrecarga. Alguns são arquivos que nós mesmos desenvolvemos, e o resto são serviços e estruturas de terceiros (3rd). Embora alguns deles exijam que você crie uma conta (ou obtenha uma chave de API, etc.), queremos enfatizar que incluímos apenas ferramentas confiáveis que nos sentimos confortáveis em usar em nossos próprios projetos e nos projetos de nossos clientes.
* requer uma chave de API
Como os projetos geralmente são gerados antes que os nomes de produtos e/ou empresas sejam finalizados, achamos que fazia mais sentido usar espaços reservados facilmente localizáveis e substituíveis do que solicitar um nome de aplicativo ou empresa no início. (É muito mais fácil encontrar/substituir "NEW_APP_NAME" sem conflitos do que encontrar/substituir uma palavra mais comumente usada.)
Quando você tiver seu produto, nome da empresa e marca finalizados, aqui estão os espaços reservados que você deverá trocar:
assets/images/logo.png
por uma imagem
personalizada
de mesmo nome, ou alterar a imagem src
no cabeçalho em
views/layouts/layout.ejs
.
Apenas um alerta: os dois parágrafos anteriores farão muito menos sentido depois que você tiver feito uma localização/substituição em cada uma dessas palavras de espaço reservado.
Depois de criar uma ação de controlador (controllers/*.js) com um dos comandos sails generate
page
-nome-da-pagina-
ou sails generate action
e adicioná-la às suas rotas
(routes.js)
(consulte os documentos Sails.js
para obter mais informações sobre como fazer isso), há apenas algumas etapas simples para
adicioná-la ao seu SDK Cloud
global:
sails run
scripts/rebuild-cloud-sdk
. (Isso regenerará automaticamente as definições de método em
seu
arquivo assets/js/cloud.setup.js
com base em suas rotas configuradas.)
await Cloud.doSomething.with({...})
Para gerar arquivos para uma nova página (por exemplo, "hotels-overview"), execute:
sails generate page hotels-overview
Em seguida, você pode adicionar uma rota para a nova ação de exibição (view) para torná-la acessível a partir do navegador. Por exemplo:
'GET /hotels': { action: 'view-hotels-overview' }
Para registrar uma nova página sem o gerador, verifique se o elemento de nível superior da exibição
que
você deseja registrar tem uma propriedade id
(por exemplo, <div
id="my-new-page">...
</div>
). Em seguida, crie um novo arquivo JavaScript e inclua parasails.registerPage('my-new-page',
{ /* options for the Vue.js instance */ }).
Para obter exemplos mais completos, pesquise
em
assets/js/pages/
.
Como este aplicativo, inicialmente, usa a biblioteca css Bootstrap, queríamos deixar um pouco mais
claro
onde nossos estilos personalizados terminam e os estilos do Bootstrap começam.
Sempre que possível, você verá style="..."
no HTML. Se, por algum motivo, uma tag de
estilo
não funcionar (por exemplo, para consultas de mídia), você verá purpose="..."
no HTML e
[purpose='...']
no arquivo .less – adotamos essa abordagem, em vez de usar nomes de classe personalizados, para
ajudar a
evitar confusão sobre quais classes vêm do Bootstrap e quais nós mesmos adicionamos.
Outro motivo: copiar/colar! Com os estilos embutidos, é muito mais fácil copiar HTML de uma página sem a necessidade de também duplicar estilos dos arquivos .less correspondentes.
No painel Heroku, configure seu aplicativo
para implantação automática a partir da ramificação (branch) de deploy
do repositório
GitHub deste projeto. Em seguida, a partir da linha de comando, execute sails run
deploy
.
Para obter mais dicas de deploy, consulte este link.
Nota para usuários Windows:o script associado ao comando deploy registrado no
arquivo
package.json
foi escrito pelos desenvolvedores do Sails para uso no Linux, portanto,
antes
de executá-lo, altere-o.
De maneira nenhuma! Você pode implantar seu aplicativo em qualquer lugar que ofereça suporte a Node.js.
Por padrão, a verificação de e-mail não é necessária para se inscrever, nem para quando um usuário
existente altera seu endereço de e-mail na página da conta. Para habilitar uma etapa de verificação
de
e-mail para ambas as ações, abra config/custom.js
e altere verifyEmailAddresses: false
para
verifyEmailAddresses: true
Para usar o Sendgrid, você precisará se inscrever em uma conta. (Embora este seja um serviço pago em níveis de uso mais altos, você deve ser capaz de usar o Sendgrid no desenvolvimento sem ter que fornecer nenhuma informação de cartão de crédito.)
Depois de criar uma conta, você precisará adicionar a Chave Secreta da API do Sendgrid à configuração
personalizada. (No desenvolvimento, isso será em config/custom
.js ou em um arquivo
local.js
que você adicionar à sua pasta config/
.
Para sua implantação de preparo ou produção, convém defini-las usando variáveis de ambiente do
sistema
-- também conhecidas como "variáveis de configuração" na Heroku.)
Se você já possui um domínio para seu aplicativo, pode seguir as instruções do próprio Sendgrid para configurar um domínio de envio.
Caso contrário, para enviar e-mails deste aplicativo sem configurar um domínio de envio,
você
pode verificar um único
remetente. Apenas certifique-se de definir sails.config.custom.fromEmailAddress
para usar o e-mail verificado, ou haverá erros dos endpoints de API que tentam enviar
e-mails.
Para usar o Stripe para o processamento de pagamentos do seu aplicativo, você precisará se inscrever em uma conta.
Depois de ter uma conta, você precisará incluir suas chaves públicas e privadas na configuração
personalizada do seu aplicativo como sails.config.custom.stripePublishableKey e sails.config.custom.stripeSecret.
No desenvolvimento, você pode adicionar suas chaves de teste ao config/custom.js ou em um arquivo
local.js
que você adiciona à sua pasta config/
.
Em sua implantação de homologação ou produção, você desejará definir suas chaves de API usando variáveis de ambiente do sistema (também conhecidas como "variáveis de configuração" na Heroku) e precisará garantir que seu site atenda aos requisitos HTTPS do Stripe para que o Stripe Checkout funcione. Para obter mais informações, consulte Guia de checkout detalhado Detailed Checkout.
Para desativar a estrutura do Bootstrap:
depencies/bootstrap/
tasks/pipeline.js
, apague 'dependencies/bootstrap/dependencies/**/*.js',
da seção
jsFilesToInject
Para desativar o FontAwesome:
assets/dependencies/font-awesome-4/
.
(Você provavelmente também vai querer pesquisar no projeto por "fa fa-" para verificar se há
ícones
remanescentes no HTML.)
Para trocar o Sendgrid:
Escolhemos o Sendgrid por causa de seu nível gratuito muito generoso (você pode enviar até 100 e-mails por dia). Além disso, ele se integra facilmente, já existe há algum tempo (por isso é estável e faz um bom trabalho evitando filtros de spam) e é usado internamente em empresas como Slack e Medium.
Está pronto para uso, mas se o Sendgrid não estiver configurado para este aplicativo, o formulário de contato e o fluxo de recuperação de senha falharão completamente, a menos que um endereço de e-mail terminado em "@example.com" seja usado. Felizmente, se você deseja usar este recurso, como uma solução diferente para enviar e-mails automatizados o Twilio. Para alternar para um serviço diferente do Sendgrid, você precisará fazer as seguintes alterações no código:
api/helpers/send-template-email.js
para usar o serviço de
e-mail
de sua escolha.
api/hooks/custom/index.js
, remova os avisos relacionados ao Sendgrid.Para remover ou substituir a integração do Stripe:
Escolhemos o Stripe porque é o processador de pagamentos mais fácil de integrar do mercado. Suas taxas são aproximadamente as mesmas que seus concorrentes, mas mesmo que esse não fosse o caso, o foco da Stripe na felicidade do desenvolvedor provavelmente compensaria. O Stripe processa pagamentos, descontos e muito mais para centenas de milhares de empresas em todo o mundo.
Por padrão, os recursos relacionados ao faturamento são desabilitados automaticamente se você não
tiver
uma chave publica do Stripe e uma chave privada em sua configuração personalizada
(sails.config.custom.stripePublishableKey e sails.config.custom.stripeSecret
,
respectivamente). Seu aplicativo não será afetado negativamente ou aparecerá quebrado;
ele
simplesmente terá algum código estranho em lugares.
User
model definition at api/models/User.js
, remove the stripeCustomerId
,
billingCardBrand
, billingCardLast4
, billingCardExpMonth
,
and
billingCardExpYear
attribute definitions.
api/controllers/entrance/signup.js
:
User.create()
, remova a propriedade
stripeCustomerId
.
api/controllers/entrance/confirm-email.js
:
api/controllers/account/update-billing-card.js
.config/routes.js
, exclua a configuração de rota para 'PUT
/api/v1/account/update-billing-card'
.
assets/js/cloud.setup.js
, exclua o método updateBillingCard
.
assets/js/pages/account/account-overview.page.js
, remova o método
clickStripeCheckoutButton
/account-overview.ejs
, remova o HTML relacionado a
faturamento.
api/hooks/custom/index.js
, remova os avisos relacionados ao Stripe.api/hooks/custom/index.js, remova sails.config.custom.enableBillingFeatures
=
!isMissingStripeConfig;
.
Se você tiver problemas, você poderá encontrar a resposta na documentação do Sails.js . Se você não tem certeza sobre como proceder, ou está completamente perplexo, não deixe de conferir o endereço últimos recursos disponíveis.
Nota para nativos da língua portuguesa:A RIZ | iko Softwarehouse pode ser seu facilitador neste processo. Clique aqui para saber como