In order to build a website faster we can use the DXA reference implementation. I would like to know if is there any documentation where it says why we need to follow this implementation, what design principles DXA uses and if any new design principles need to be introduced on top of DXA what will be the best approach?
You don't need to follow the reference implementation, it's just an example website, though it has some good examples and scenarios which can be recycled.
DXA is MVC in essence, so every design principle which is valid and proven in MVC will also perform well in DXA. There is a slight difference in DXA involving the "under the hood multi layer routing for various items (Page, Region and Entity)" and some related to how the Model is obtained (and cached (including rendered output caching)) so just keep those in mind when applying any design principles/choices.
As Rick has mentioned in his comment, a good place to start is the official docs, but also debugging through the reference implementation to get a better understanding about the DXA specific concepts and how they fit into any design choices.
Having implemented several DXA solutions for clients I recommend you take a look at the following DXA resources
- DXA Demo Site by Bart Koopman
- DXA Video presentation on SDL Docs
- DXA Core Code on github
- DXA Demo website Code on github
You can get a responsive MVC DXA site up and running using the DXA Models and DXA Views , you just need to add content and change the CSS to provide your house style.
You can use the DXA Models and add your own Views ,if you don't want to use Bootstrap you don't have to. You can add extra Models and Views to suit your specific use cases.
You can write your own Models and Views if you need to. (You can easily auto-generate the Models and Default views based on your schema with PowerShell and Tridion Core service)
You can even migrate an exiting site to MVC DXA by creating Models and Views based on the existing site schema.
DXA Region Views and Page Views help to avoid a proliferation of additional Controllers.
Whatever way you choose, I recommend that you take advantage of the Core Embedded schema for links and lists, plus make sure that you add the DXA Markup to enable Experience Manager from the start.
It will help if you get some DXA training from SDL or one of the many experienced Tridion Consultants so that you get a good implementation from the start.
The DXA reference implementation is a reference to show you how to build a standards compliant MVC responsive site which is supported by SDL and the SDL community. If you chose DXA then you will also be able to take advantage of the additional integration solutions provided by SDL and the SDL Community.
Adding to the very good comment from Atila, I thought I could expand on why the DXA was created in the first place, as that can help understand a few decisions.
- There was no "out-of-the-box" implementation for Tridion that was somewhat modern (one could argue that CWA was such an implementation, but it was at least 10 years old back in 2015)
- Everyone was re-inventing the wheel with the basics
- It was hard to push out any sort of extension or basic site functionality if there wasn't at least one "this is how you should do it" implementation
- DD4T - while probably superior, I don't want to get into that debate - did not have an end-to-end implementation, and focused on the under-the-hood functionality and not so much on the finished result.
There's more, of course, but the topics above drove the decision to create the DXA. From an application point of view, as Atila states, it was based on MVC, it uses a generic JSON data format (provided by DD4T libraries), and it tried to make it more "web-developer friendly" than what we had before.