none
SPA Aspnet Mvc4 Knockout - Estrutura/Arquivos/DIretórios RRS feed

  • Pergunta

  • Bom dia Pessoal, tenho uma dúvida bem simples a respeito da estrutura de pastas/arquivos de uma Single Page Application(SPA) usando asp.net mvc + framework javascript(no caso knockoutjs)

    Bom, em todos os exemplos que vi, eles sempre deixam os arquivos .js dos model do knockout na pasta Script, até aí beleza

    tu usa lá @Script.Render e pronto né...

    Mas são exemplos pequenos, e se for uma app bem grande? deixar tudo na pasta Script viraria uma bagunça, e se tiver area? mais bagunça ainda né, minha dúvida é a seguinte, tenho em mente que cada View tenha seu arquivo .js

    View 

    MinhaView 

    arquivoView.html

    Script(Pasta)

    arquivoModel.js

    Penso eu nessa estrutura, mas aí, quando vou acessar dentro da View o arquivo <script src= "script/arquivoModel.js"

    ele não acha...usar @Script.Render não iria funcionar, minha dúvida é, qual Helper usar nesse caso? qual a melhor forma?

    Pois não quero ficar perdido nos meus arquivos, e também não quero que de falhas ao carregar...

    Obrigado

    Rodrigo

    terça-feira, 17 de setembro de 2013 13:19

Respostas

  • Bom dia Rodrigo,

    Uma boa estrutura seria essa:

      Vendor/ --Pasta com os scripts que não são seus
        knockout.js
        jquery.js
      Helpers/ --Pasta com Scripts comuns a todos
        MeuHelper.js
      Models/ --Pasta com os scripts para cada Model
        User.js
        Message.js
      ViewModels/ --Pasta com os scripts para ViewModel
        messages.js
      Views/ --Pasta para as Views
        Index.html

    Dentro dessas pastas você poderia criar sub-pastas para dividir a aplicação.

    Você não deve usar HTML Helper de forma alguma, porque as requisições não são processadas pela View Engine, logo inclua seu script usando Relative Path, por exemplo:

    <script src="/Scripts/jquery-1.8.2.js"></script>

    Para maiores informações consulte o blog do John Papa, ele trabalha para Microsoft:

    Att,

    • Marcado como Resposta RodrigoCez terça-feira, 17 de setembro de 2013 14:52
    terça-feira, 17 de setembro de 2013 13:39

Todas as Respostas

  • Bom dia Rodrigo,

    Uma boa estrutura seria essa:

      Vendor/ --Pasta com os scripts que não são seus
        knockout.js
        jquery.js
      Helpers/ --Pasta com Scripts comuns a todos
        MeuHelper.js
      Models/ --Pasta com os scripts para cada Model
        User.js
        Message.js
      ViewModels/ --Pasta com os scripts para ViewModel
        messages.js
      Views/ --Pasta para as Views
        Index.html

    Dentro dessas pastas você poderia criar sub-pastas para dividir a aplicação.

    Você não deve usar HTML Helper de forma alguma, porque as requisições não são processadas pela View Engine, logo inclua seu script usando Relative Path, por exemplo:

    <script src="/Scripts/jquery-1.8.2.js"></script>

    Para maiores informações consulte o blog do John Papa, ele trabalha para Microsoft:

    Att,

    • Marcado como Resposta RodrigoCez terça-feira, 17 de setembro de 2013 14:52
    terça-feira, 17 de setembro de 2013 13:39
  • Bom dia Filipe, Obrigado pela resposta, e realmente ficou bem claro sua resposta e gostei da sua estrutura.

    O que você quis dizer com não usar Html Helper? apenas para chamada de script ou quis dizer em uso geral?

    Até mesmo o uso dos @Html.Label /text etc...

    No mais entendi tudo, obrigado, só ficou aquela dúvida, que por sinal eu estou encucado em usar esses @html helpers...não vejo tanta vantagem ou algo assim, até procurei qual a vantagem de usar um @html helper, ao criar no braço mesmo...

    terça-feira, 17 de setembro de 2013 14:04
  • Bom dia,

    Eu quis dizer que com SPA não deve usar de maneira alguma os HTML Helpers. Estes são executados pela View Engine, Razor ou ASPX diretamente no server. Quando está lidando com SPA suas Views rodam completamente em cliente-side por meio de JavaScript, apenas com chamadas para o ASP.NET MVC / Web API para obter ou enviar dados ao servidor.

    Obs: Não esquece de marcar a resposta que solucionou seu problema, é muito importante para o fórum que problemas resolvidos sejam marcados como resolvidos.

    Att,


    terça-feira, 17 de setembro de 2013 14:22
  • Ah entendi o que quis dizer...

    Obrigado Filipe :)

    terça-feira, 17 de setembro de 2013 14:52